__init_subclass__ 是 Python 3.6 引入的一个特殊方法,用于在子类被定义时执行一些操作。

这个方法允许你在父类中定义一个类方法,当子类继承父类时会自动调用这个方法,你可以在其中进行一些初始化工作。

以下是关于 __init_subclass__ 方法的一些重要点:

  • 目的: __init_subclass__ 方法通常用于在父类中定义一些通用的逻辑,以便在子类继承时自动执行。这可以避免在每个子类中重复编写相同的代码。

  • 参数:__init_subclass__方法接受2个参数:

  • cls:表示子类,被继承的类

其他的关键字参数:这些参数可以是任何子类定义时传递的关键字参数。

使用场景: 你可以在 __init_subclass__ 方法中执行一些初始化逻辑,如注册子类、检查子类的属性或方法等。

以下是一个示例,演示了如何使用 __init_subclass__ 方法:

class Base:    subclasses = []    def __init_subclass__(cls, **kwargs):        super().__init_subclass__(**kwargs)        Base.subclasses.append(cls)class Subclass1(Base):    passclass Subclass2(Base):    pass#Python学习交流群:711312441print(Base.subclasses)  # 输出: [, ]

在这个示例中,Base 类定义了 __init_subclass__ 方法,用于将子类添加到 subclasses 列表中。

当子类 Subclass1 和 Subclass2 继承 Base 类时,它们会自动被添加到 subclasses 列表中。

最后,我们打印了 Base.subclasses,可以看到子类被正确地添加到了列表中。

总之,__init_subclass__ 方法允许你在父类中定义一些通用的初始化逻辑,使得子类在继承时能够自动执行这些逻辑,提高了代码的重用性和可维护性。