子類在創建的時候,就會像父類的__init_subclass__就像一個回調函數,
會收到子類的的值,以及所傳遞的參數。
注意是子類在創建的時候,與實例化無關。
class A: def __init_subclass__(cls, **kwargs): print('init_subclass:', cls, kwargs) class B(A):... class C(B):... # 可以在這里進行傳參,非常有意思 class D(C,name='sidian'): def __init__(self, name): self.name = name d = D('sidian')
輸出:
init_subclass: <class '__main__.B'> {} init_subclass: <class '__main__.C'> {} init_subclass: <class '__main__.D'> {'name': 'sidian'}
最后抄寫Python學習筆記的原文:
__init_subclass__是一個隱式類型方法,在所有層次的子類型創建被調用,其甚至可接收鍵值參數。