maa*_*aku 6 python python-2.x isinstance
我的理解是,由于类型/类统一,每个值都是源自的类型object.但是我在文档中找不到对此的绝对确认.尽管理所当然isinstance(anything, object)应该是True,但我也可以想象Python 2代码库中存在遗留边缘情况.有谁知道一个例子isinstance(value, object)是不是 True?
上下文:作为我正在设计的类型层次结构的一部分Alpha,我想要isinstance(obj, Alpha)总是返回一个全方位的类型True.我认为Python 2.6+ ABCMeta.register(object)应该可以解决这个问题,但我想确定一下.
编辑:为了后人的缘故,ABCMeta.register(object)将无法工作(尝试).Ethan Furman在下面的答案中提供了另一种解决方案.
可以在非 Python 代码(C例如,)中创建不派生自object.
您应该能够通过添加__subclasshook__以下内容来实现您想要的Alpha:
--> import abc
--> class Test(object):
... __metaclass__ = abc.ABCMeta
... @classmethod
... def __subclasshook__(cls, C):
... return True
...
--> isinstance(dict(), Test)
True
--> isinstance(42, Test)
True
--> isinstance(0.59, Test)
True
--> class old_style:
... pass
...
--> isinstance(old_style(), Test)
True
Run Code Online (Sandbox Code Playgroud)