2015-12-14 6 views
28

Рассмотрим следующий фрагмент кода:Тип подсказки в namedtuple

from collections import namedtuple 
point = namedtuple("Point", ("x:int", "y:int")) 

Кодекс выше всего лишь способ, чтобы продемонстрировать, как к тому, что я пытаюсь достичь. Я хотел бы сделать namedtuple с типом намеков.

Знаете ли вы какой-либо изящный способ достижения результата по назначению?

ответ

44

Вы можете использовать typing.NamedTuple

Из документов

типизированных версия из namedtuple.

>>> import typing 
>>> Point = typing.NamedTuple("Point", [('x', int), ('y', int)]) 

Это присутствует только в Python 3.5 года

+0

Я объявил это следующим образом: 'GeoPoint = NamedTuple ('GeoPoint', [('долгота', флоат), ('широта', с плавающей точкой)]), тогда я пытаюсь geo = GeoPoint (** data), где данные dict, содержащие необходимые ключи, и значения являются 'decimal.Decimal', и никакого приведения в float не происходит (нет typerror либо :(:(так как это' typing.NamedTuple' работает? см. https://gist.github.com/andilabs/15002176b2bda786b9037077fa06cc71 – andi

+4

@andi typing не применяет или не применяет переменные afaik. –