帶有自定義類的外掛
在 Python 3.6 中, PEP 487 新增了 __init_subclass__
特殊方法,它簡化並擴充套件了類定製,而不使用元類 。因此,此功能允許建立簡單的外掛 。在這裡,我們通過修改先前的示例來演示此功能 :
Python 3.x >= 3.6
class Base:
plugins = []
def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs)
cls.plugins.append(cls)
def test(self):
print("Base.")
class PluginA(Base):
def test(self):
super().test()
print("Plugin A.")
class PluginB(Base):
def test(self):
super().test()
print("Plugin B.")
結果:
PluginA().test()
# Base.
# Plugin A.
PluginB().test()
# Base.
# Plugin B.
Base.plugins
# [__main__.PluginA, __main__.PluginB]