2016-05-27 3 views
2

После того как я объявляю псевдоним t1 = typing.List[int] или t2=typing.List[double], как определить из t1, что это List[int] и от t2 что это List[double]? Есть ли скрытые атрибуты или функции от t1 и t2, которые могут вам помочь?Как определить тип типа сглаживания?

+0

Вы имеете в виду статически или во время выполнения? Во время выполнения вы делаете это так же, как вы бы это сделали, если бы вы использовали 'typing.List [int]' напрямую. Конечно, я сейчас не уверен, что будет с этим. – user2357112

+0

Я имею в виду во время выполнения. Если я вижу некоторую переменную t, что я могу сделать, чтобы понять, что t является 'typing.List [int'] или' typing.List [double] 'или' typing.List [something] '? –

ответ

3

интерактивно, ваш самый полезный вариант, вероятно,

>>> t1 
typing.List[int] 

Если вы хотите, чтобы проверить его в программе, вы можете смотреть на вещи, как __name__, __parameters__, или issubclass докладов, как подкласс typing.List:

>>> t1.__name__ 
'List' 
>>> t1.__parameters__ 
(<class 'int'>,) 
>>> issubclass(t1, typing.List) 
True 
+0

Ах, это больше того, что я ищу, свойство '.__ parameters__'. Также в каком случае '__parameters__' даст кортеж из 2 или более вещей? Спасибо –

+0

@VuNguyen: для общего типа с более чем одним параметром типа, например 'typing.Mapping [str, str]'. – user2357112

Смежные вопросы