子類在創建的時候,就會像父類的__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__是一個隱式類型方法,在所有層次的子類型創建被調用,其甚至可接收鍵值參數。
