子类创建向父类传递信息__init_subclass__方法

子类在创建的时候,就会像父类的__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__是一个隐式类型方法,在所有层次的子类型创建被调用,其甚至可接收键值参数。

原文地址:https://www.cnblogs.com/sidianok/p/13717125.html