Хороший способ определить новый протокол для типов сбораPython

Программы на Python
Anonymous
Хороший способ определить новый протокол для типов сбора

Сообщение Anonymous »

Я хотел бы определить новый структурный тип для моего кода, который в основном не обдумывается, упорядоченный набор. br />

Код: Выделить всё

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

Вернуться в «Python»