用python寫介面所學到的點

2021-10-01 14:04:06 字數 1492 閱讀 6610

一、抽象類

用抽象類定義基類,抽象類中定義相應的介面方法,子類繼承實現。 注意:抽象類不可被例項化

使用abc模組下的abcmeta定義乙個抽象類。

abstractmethod來定義乙個抽象方法,其抽象方法必須在子類中實現。如果在非抽象類好像可以用 raise notimplementederror

from abc import abcmeta, abstractmethod

class baseclass(metaclass=abcmeta):

def __init__(self, msg):

print("create baseclass!")

print(msg)

print('----------')

@abstractmethod

def fn(self):

print('implement')

然後使用繼承的方法來具體化,還有一種是註冊,我不太熟悉

class childclass(baseclass):

def __init__(self, msg):

super().__init__(msg)

def fn(self):

super().fn()

print('ok')

test = childclass('hello')

test.fn()

執行結果:

assert斷言  -  判斷輸入檔案路徑是否存在,不存在則停止執行。img為檔案路徑,「」裡面為列印的文字警告。

assert os.path.exists(img), "warning: the file path dose not exist!"
二、配置檔案

為了把相關配置寫進配置檔案,配置檔案採用json檔案。python中json模組可以直接load.

@classmethod

def load(cls, cfg_fp):

with open(cfg_fp) as file:

cfg = json.load(file)

cfg = cls(**cfg['nn_params'])

return cfg

classmethod是表示類方法,在類沒有例項化時可以直接呼叫該方法。在上面**中用load讀取了配置檔案,然後用檔案內的引數,例項化了乙個物件。並把獲得的物件返回。

發現乙個問題,當父類中的方法為抽象方法時,在其子類中必須將其實現。但不一定必須要在子類方法中用super呼叫父類中相應的方法,只需要方法名字和引數一致即是實現。

notimplementederror   

抽象類   

元類,講的很好但是沒用到: 

用python寫24點遊戲

思路 通過暴力方法破解 即全排列 利用字尾表示式來去除括號的麻煩 對零這個特殊數字的處理 再字尾轉中綴表示式 輸入4個 1 13 之間的數字 definput while true try a,b,c,d map int,input 請輸入 1 13 之間的四個數字 空格分開 split for i...

python庫用什麼寫的 python庫用什麼寫好

requests.kenneth reitz寫的最富盛名的http庫。每個python程式設計師都應該有它。scrapy.如果你從事爬蟲相關的工作,那麼這個庫也是必不可少的。用過它之後你就不會再想用別的同類庫了。wxpython.python的乙個gui 圖形使用者介面 工具。我主要用它替代tkin...

python是用c寫的嗎 python是用c寫的嗎

python的誕生 1991年,第乙個python編譯器 同時也是直譯器 誕生。它是用c語言實現的,並能夠呼叫c庫 so檔案 從一出生,python已經具有了 類 class 函式 function 異常處理 exception 包括表 list 和詞典 dictionary 在內的核心資料型別,以...