Неявный поиск типа 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно разыграть объект типа 'System.collections.generic.list`1 [System.object]' type 'System.collections.generic.li
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Получение ошибки. Невозможно преобразовать Generic.Comparer<Pair> в Generic.IComparer<int> при сравнении двух объектов в
    Anonymous » » в форуме C#
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Невозможно преобразовать из 'System.Collections.Generic.IEnumerable> в строку[]
    Anonymous » » в форуме C#
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Generic класса игнорируется конструктором Generic Pydantic
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Generic класса игнорируется конструктором Generic Pydantic
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

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