С Python 3.8 я смог сделать что-то вроде этого:
from typing import TypeVar, Generic
T = TypeVar('T')
class Stack(Generic[T]):
def __init__(self) -> None:
# Create an empty list with items of type T
self.items: List[T] = []
Я могу, возможно, Stack [int] или Stack [str], T может быть чем угодно, верно?
Но что, если я хочу ограничить мои возможные значения T только подклассами Foo или вещами, которые являются подклассами Foo, и реализовать BarProtocol?
Scala имеет следующие изящные ковариационные операторы:
T <: Foo, T <: BarProtocol
Но есть ли эквивалент в Python?