Общий класс [T] с доступом к параметру типа метода класса в Python 3.12Python

Программы на Python
Anonymous
Общий класс [T] с доступом к параметру типа метода класса в Python 3.12

Сообщение Anonymous »

Подобно тому, как можно получить тип из сигнатуры типа универсального класса с помощью метода класса, теперь мне интересно сделать то же самое для самой сигнатуры типа метода класса.
Для например, я хотел бы напечатать конкретный тип T в этом примере:
class MyClass[T]:
kind: type[T]

@classmethod
def make_class[T](cls) -> "MyClass[T]":
instance = cls()
instance.kind = ...
print(instance.kind)
return instance

В настоящее время это приведет к исключению:
>>> MyClass.make_class[int]()
TypeError: 'method' object is not subscriptable

Идеальным вариантом был бы собственный декоратор «classmethod», поскольку, как я полагаю, он потребует наименьшего количества «взломов» работы универсальных классов.
class MyClass[T]:
kind: type[T]

@typed_classmethod
def make_class[T](cls) -> "MyClass[T]":
...


Подробнее здесь: https://stackoverflow.com/questions/789 ... ython-3-12

Вернуться в «Python»