我们怎样才能让一个关于谁已经分类的谎言?
在阅读doc之后我尝试了这个:
>>> class AllYourBase(type):
... @classmethod
... def __subclasscheck__(cls, other):
... return True
...
>>> class AllYour(object):
... __metaclass__ = AllYourBase
现在,这个班级应该报告你所有的基地都属于他。
但它不起作用:
>>> issubclass(AllYour, int)
False
为什么不呢?
答案 0 :(得分:2)
如果您希望AllYour
声称是每个类的子类,那是不可能的。 __subclasscheck__
在另一个方向工作。
如果您希望AllYour
声明每个类都将其子类化,请删除@classmethod
装饰器,并在issubclass
调用中切换参数。您在元类上定义的特殊方法不需要特殊装饰。