Магические методы на уроке самости
Я ищу способ вызывать магические методы на экземплярах классов. В моем случае я хочу вызвать хэш для класса на основе свойств. Я нашел решение с метаклассом, но я не могу получить доступ к свойствам класса из метода метакласса.
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))
Я нашел только эту тему: Определение магических методов на классах
1 ответ
Решение
Возьмите @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
,