Неявный поиск типа Generic[T] classmethod в Python 3.12Python

Программы на Python
Anonymous
Неявный поиск типа Generic[T] classmethod в Python 3.12

Сообщение Anonymous »

Я хотел бы использовать новый синтаксис подписи универсального типа Python 3.12, чтобы узнать тип класса, экземпляр которого будет создан, в методе класса этого класса.
/>Например, в этом примере я хотел бы напечатать конкретный тип T:

Код: Выделить всё

class MyClass[T]:
kind: type[T]

...

@classmethod
def make_class[T](cls) -> "MyClass[T]":
print("I am type {T}!")
return cls()
Я использовал совет из следующего вопроса StackOverflow, чтобы сделать это для подтверждения типа как в __new__, так и в __init__, но мне еще предстоит выяснить это умный способ сделать это с помощью статического метода или метода класса (в идеале метода класса).
  • Базовый класс Generic[T] – как получить тип T изнутри экземпляра?
Моя цель — иметь следующий API:

Код: Выделить всё

>>> MyClass[int].make_class()
"I am type int!"
Или этот API (который, я думаю, пока синтаксически невозможен):

Код: Выделить всё

>>> MyClass.make_class[int]()
"I am type int!"
В любом случае возвращаемый экземпляр будет иметь int, привязанный к переменной класса, чтобы я мог использовать его позже.

Код: Выделить всё

MyClass[int].make_class().kind is int == True
Я открыт для «хаков» (включая интенсивное использование проверки).


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

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