Код: Выделить всё
from ordered_set import OrderedSet
from typing import Protocol, TypeVar
from collections.abc import Set, Sequence
T = TypeVar("T", covariant=True)
class ConstOrderedSet(Protocol, Set[T], Sequence[T]): # type: ignore[misc]
pass
x: ConstOrderedSet[int] = OrderedSet([1, 2, 3])
x.append(5) # correctly fails
x[1] # correctly passes
x[1] = 2 # correctly fails
Но , по -видимому, только протокол разрешен в дереве наследования протокола < /code> s и, по -видимому, установили и quescence не протоколы.
Код делает с Mypy , что я хочу, но мне интересно, как это сделать правильно без необходимость реализовать полный протокол constorderedset самостоятельно.
Подробнее здесь: https://stackoverflow.com/questions/794 ... tion-types