Код: Выделить всё
impl Trait for Struct where T: Bound
Моя идея сделать это в Python заключается в следующем:
from dataclasses import dataclass
@dataclass
class A[T]:
data: T
def m[C: int](self: "A[C]") -> int:
return self.data * 2
a1 = A(1)
a2 = A("hi")
a1.m()
a2.m()
Pylance правильно помечает a2.m () в качестве ошибки, так что это, по -видимому, работает. Это лучшее, что я могу сделать в Python? В частности, я обеспокоен тем, как это может взаимодействовать с подтингом. Например: < /p>
Код: Выделить всё
@dataclass
class B[T](A[T]):
def m[C: str](self: "A[C]") -> int:
return len(self.data)
b = B(1)
l: list[A[int]] = [b]
a = l[0] # Somehow gets casts to A
a.m() # Typechecks, but errors
< /code>
Изменить: перефразировать мою обеспокоенность по поводу подтипирования + приведен пример. Я понял, что строковая аннотация "a [c]"
Подробнее здесь: https://stackoverflow.com/questions/795 ... -in-method