我们如何才能使一个关于谁被欺骗的谎言的阶级呢?
阅读doc后,我尝试了以下操作:
>>> class AllYourBase(type):
... @classmethod
... def __subclasscheck__(cls, other):
... return True
...
>>> class AllYour(object):
... __metaclass__ = AllYourBase
现在,这个班级应该报告您所有的基地都属于他。
但这没有用:
>>> issubclass(AllYour, int)
False
为什么不?
最佳答案
如果要AllYour
声明自己是每个类的子类,则不可能。 __subclasscheck__
在另一个方向上起作用。
如果要AllYour
声明每个类都为其子类化,请删除@classmethod
装饰器,并在issubclass
调用中切换参数。您在元类上定义的特殊方法不需要特殊修饰。