class 自我的魔法方法
Magic methods on class self
我正在寻找一种在 class 实例上调用魔法方法的方法。就我而言,我想根据属性在 class 上调用散列。我找到了 metaclass 的解决方案,但我无法从 metaclass 的方法访问 class 属性。
class X(type):
@classmethod
def __hash__(cls):
return hash(cls.x)
class Y(metaclass=X):
x = (1, 2, 3)
assert hash(Y) == hash((1, 2, 3))
我只找到了这个帖子:
脱下@classmethod
。
class X(type):
def __hash__(self):
return hash(self.x)
class Y(metaclass=X):
x = (1, 2, 3)
assert hash(Y) == hash((1, 2, 3))
您希望 __hash__
接收 Y
,它是 X
的一个实例。您不希望它接收 X
.
我正在寻找一种在 class 实例上调用魔法方法的方法。就我而言,我想根据属性在 class 上调用散列。我找到了 metaclass 的解决方案,但我无法从 metaclass 的方法访问 class 属性。
class X(type):
@classmethod
def __hash__(cls):
return hash(cls.x)
class Y(metaclass=X):
x = (1, 2, 3)
assert hash(Y) == hash((1, 2, 3))
我只找到了这个帖子:
脱下@classmethod
。
class X(type):
def __hash__(self):
return hash(self.x)
class Y(metaclass=X):
x = (1, 2, 3)
assert hash(Y) == hash((1, 2, 3))
您希望 __hash__
接收 Y
,它是 X
的一个实例。您不希望它接收 X
.