Этот интерфейс имеет метод __eq__, который может сравнивать несколько экземпляров одного и того же класса, реализующего этот протокол. Реализуя этот протокол, классы получают реализацию метода __eq__ по умолчанию.
Код: Выделить всё
import typing
@typing.runtime_checkable
class MyInterface(typing.Protocol):
def __eq__(o1, o2) -> bool:
''' checks if `o1` and `o2` are equal to one another '''
from random import randint
return bool(randint(0,1)) # TODO: write a better implementation
...
Вот что я рассмотрел:
- Можно определить переменную типа следующим образом: T = typing.TypeVar('T') и используйте это в подписи:
Код: Выделить всё
def __eq__(o1: T, o2: T) -> bool:
- Вместо этого я мог бы подробно рассказать о протоколе :
Код: Выделить всё
def __eq__(o1: 'MyProtocol', o2: 'MyProtocol') -> bool:
Как можно этого добиться?
Подробнее здесь: https://stackoverflow.com/questions/718 ... intersecti