一、抽象類
用抽象類定義基類,抽象類中定義相應的介面方法,子類繼承實現。 注意:抽象類不可被例項化
使用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 在內的核心資料型別,以...