通过定义__instancecheck__()
类元类的特殊方法,可以控制对象何时作为该类的成员进行测试。如果您有一个预定义的类 P(例如,一个内置类),并且您想有条件地控制您的 C 类的给定实例是否作为 P 类型的对象进行测试,该怎么办?这可以做到吗?
这是一个愚蠢的例子:
class C:
def __init__ (self, x, y):
self.x = x
self.y = y
假设我希望 C 作为 class 的对象进行测试numbers.Number
,但前提是x > y
和y % 3 == 0
。(我说这将是一个愚蠢的例子。)
from numbers import Number
assert isinstance(C(4, 3), Number)
assert not isinstance(C(1, 3), Number)
assert not isinstance(C(4, 2), Number)
这可以做到吗?如何?