我们如何才能使一个关于谁被欺骗的谎言的阶级呢?

阅读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调用中切换参数。您在元类上定义的特殊方法不需要特殊修饰。

10-07 22:07