Python中是否存在isinstance(value,object)不为True的值?

2024-04-25 16:56:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的理解是,由于类型/类统一每个值都是从object派生的类型。但是我在文件中找不到绝对的确认。虽然isinstance(anything, object)应该始终是True,但我也可以想象Python2代码库中存在遗留的边缘情况。有人知道一个例子,其中isinstance(value, object)不是True?在

上下文:作为我正在设计的类型层次结构的一部分,我希望isinstance(obj, Alpha)总是返回True的一个类型。我认为在Python2.6+ABCMeta.register(object)上应该可以做到,但我想确定一下。在

编辑:看在后人的份上,ABCMeta.register(object)不会起作用(试试看)。Ethan Furman在下面的回答中为这个案例提供了另一种解决方案。在


Tags: 文件代码registertrue类型objectvalue情况
2条回答

在2.x中,默认情况下,用户定义的类(以及一些stdlib类)不是从object派生的。这是在3.x中修复的

可以在非Python代码中创建不从object派生的类(例如C)。在

您应该能够通过将__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

相关问题 更多 >