我想让我的类看起来像是一个不同的对象,以规避我正在使用的软件包中的懒惰类型检查。更具体地说,在实际情况下,我正在尝试使我的对象看起来像另一个对象的实例(在我的例子中是
为了达到这个目的,我计划重写
下面是一个SSCCE,它应该使所有情况下的
我做错了什么?
元组
),而实际上它甚至不是这个对象的派生。为了达到这个目的,我计划重写
__isinstance__
方法,根据文档, 这样做应该能够如我所愿。然而,似乎我并没有理解如何确切地执行这个操作,因为我的尝试一直不成功。下面是一个SSCCE,它应该使所有情况下的
isinstance
返回False
,但实际上并没有。class FalseInstance(type):
def __instancecheck__(self, instance):
return False
class Foo(metaclass=FalseInstance):
pass
g = Foo()
isinstance(g, Foo)
> True
我做错了什么?
__isinstance__
始终返回_True_,它仍然不能按照我期望的方式工作:isinstance(g, int)
仍然返回False
。这里的问题是什么? - Nearootuples
是不可变的,因此使用起来有点麻烦,对吧?我还不知道包需要使用元组的哪些方面才能正常工作,但我想在抛出异常时添加它们... - Nearoo