Базовый класс Generic[T] – как получить тип T из экземпляра?Python

Программы на Python
Ответить
Anonymous
 Базовый класс Generic[T] – как получить тип T из экземпляра?

Сообщение Anonymous »

Предположим, у вас есть класс Python, который наследуется от Generic[T]. Есть ли способ получить фактический тип, переданный из класса/экземпляра?
Например,

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

from typing import TypeVar, Type, Generic
T = TypeVar('T')

class Test(Generic[T]):
def hello(self):
my_type = T  # this is wrong!
print( "I am {0}".format(my_type) )

Test[int]().hello() # should print "I am int"
Здесь предполагается, что тип arg будет присутствовать в поле args типа. И действительно,

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

print( str( Test[int].__args__ ) )
будет напечатан (,). Однако я не могу получить к этому доступ напрямую из экземпляра, например. замена

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

      my_type = self.__class__.__args__ # this is also wrong (None)
похоже, не в этом дело.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/577 ... n-instance
Ответить

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

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

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

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

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