Подтвердить что ты не робот

Соответствие typename в namedtuple

from collections import namedtuple

Point=namedtupe('whatsmypurpose',['x','y'])
p=Point(11,22)
print(p)

Вывод:

whatsmypurpose(x=11,y=22)

Какова релевантность/использование 'whatsmypurpose'?

4b9b3361

Ответ 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)
>>>