Я хотел бы автоматически заполнить тип, используемый в Python производном классе от Generic [T]. Итак, что-то вроде следующего:
from typing import Generic, Type, TypeVar
_T = TypeVar("T")
class A: ...
class B(Generic[_T]):
TYPE: Type[_T]
...
class D(B[A]):
# I want to TYPE to be auto populated here to be class A given A is already specified as a type parameter
...
Я думал сделать это в __new__ базового класса B, это выполнимо, но устанавливает TYPE только для экземпляра класса D и выглядит довольно грязно:
class B(Generic[_T]):
def __new__(cls, *args, **kwargs):
cls.TYPE = cls.__orig_bases__[0].__args__[0]
return super().__new__(cls, *args, **kwargs)
Есть ли лучший способ сделать это? Спасибо.