Как создать не абстрактный метод __hash__ в абстрактном классе Python

Рейтинг: 0Ответов: 1Опубликовано: 29.01.2023

У меня есть абстрактный класс Type

class Type(ABC):
    def __hash__(self) -> int:
        return hash(self.text_repr())

    @abstractmethod
    def __eq__(self, other) -> bool: ...

    @abstractmethod
    def text_repr(self) -> str: ...

Я хочу сделать метод __hash__ не абстрактным, но это не работает именно с магическими методами. Если я допустим переименую метод в hash, то это будет работать. Но мне нужен именно магический метод, что бы пользоваться структурой данных set.

Я использую Python 3.10.6.

Ответы

▲ 1

Оказывается это специфический случай в Python. То есть без __hash__ = Type.__hash__ не обойтись. Документация