Автоматическое заполнение типа Python Generi c для подклассов generi c - PullRequest
0 голосов
/ 07 января 2020

Я хотел бы автоматически заполнить тип, используемый в 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)

Есть ли лучший способ сделать это? Спасибо.

...