Подобно тому, как можно получить тип из сигнатуры типа универсального класса с помощью метода класса, теперь мне интересно сделать то же самое для самой сигнатуры типа метода класса.
Для например, я хотел бы напечатать конкретный тип 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