Python дженериков с ограничениями? - PullRequest
1 голос
/ 17 апреля 2020

С 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?

...