相关疑难解决方法(0)

__instancecheck__-覆盖不起作用-我在做什么错?

我试图使我的类作为另一个对象出现,以规避正在使用的程序包中的惰性类型检查。更具体地说,我试图使我的对象作为另一个对象的实例出现(tuple在我的情况下),而实际上它甚至不是该对象的派生。

为了实现这一目标,我计划重写该__isinstance__方法,根据docs,该方法应该完全按照我的意愿进行。但是,由于我的尝试未成功,因此我似乎不知道该怎么做。

这是一个SSCCE,应该在所有情况下可以isinstance回报False,但不能回报。

class FalseInstance(type):
    def __instancecheck__(self, instance):
        return False

class Foo(metaclass=FalseInstance):
    pass

g = Foo()
isinstance(g, Foo)
> True
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python metaclass magic-methods isinstance python-3.x

1
推荐指数
2
解决办法
367
查看次数