我正在尝试为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
)失败?可定制的异常是最好的,但内置也可以。