我正在尝试为“忘记”检查失败的 Python C 扩展编写回归测试PyObject_IsInstance
。但我唯一能想到的是一个覆盖的元类,__instancecheck__
例如:
import six
class InstanceCheckGoneWrong(type):
def __instancecheck__(self, other):
raise TypeError('isinstance failed')
@six.add_metaclass(InstanceCheckGoneWrong)
class FailingIsinstanceClass():
pass
有用:
>>> isinstance(1, FailingIsinstanceClass)
TypeError: isinstance failed
但这似乎很复杂。有没有更简单的方法(python2 和 python3 兼容)让PyObject_IsInstance
( isinstance
) 失败?可定制的异常是最好的,但内置的也可以。