Соответствие typename в namedtuple
from collections import namedtuple
Point=namedtupe('whatsmypurpose',['x','y'])
p=Point(11,22)
print(p)
Вывод:
whatsmypurpose(x=11,y=22)
Какова релевантность/использование 'whatsmypurpose'
?
Ответы
Ответ 1
namedtuple() - это функция factory для кортежей. Здесь whatsmypurpose - это имя типа. Когда вы создаете именованный кортеж, класс с таким именем (whatsmypurpose) создается внутренне.
Вы можете заметить это, используя аргумент аргумента типа:
Point=namedtuple('whatsmypurpose',['x','y'], verbose=True)
Также вы можете попробовать тип (p), чтобы проверить это.
Ответ 2
'whatsmypurpose'
дает новый подкласс его имя типа. Из документов:
collections.namedtuple( typename, field_names, verbose = False, rename = False)
Возвращает новый подкласс подставок с именем typename.
Вот пример:
>>> from collections import namedtuple
>>> Foo = namedtuple('Foo', ['a', 'b'])
>>> type(Foo)
<class 'type'>
>>> a = Foo(a = 1, b = 2)
>>> a
Foo(a=1, b=2)
>>> Foo = namedtuple('whatsmypurpose', ['a', 'b'])
>>> a = Foo(a = 1, b = 2)
>>> a
whatsmypurpose(a=1, b=2)
>>>