Именованные кортежи (namedtuples) — это удобный способ определения простых классов для хранения данных. Они являются подклассами кортежей и добавляют именованные поля для упрощения доступа к атрибутам. В этой статье мы рассмотрим, как создавать и использовать именованные кортежи в Python.
Создание именованного кортежа
Для создания именованного кортежа вам нужно импортировать модуль collections
и использовать функцию namedtuple()
:
from collections import namedtuple Person = namedtuple("Person", ["name", "age", "city"])
Здесь мы создаем именованный кортеж Person
с полями name
, age
и city
. Обратите внимание, что поля могут быть переданы как список или строка с разделителями (обычно пробелом):
Person = namedtuple("Person", "name age city")
Теперь вы можете создавать экземпляры Person
:
person1 = Person("Alice", 30, "New York") person2 = Person("Bob", 25, "San Francisco")
Доступ к полям именованного кортежа
Чтобы получить доступ к полям именованного кортежа, вы можете использовать точечную нотацию:
print(person1.name) # выводит "Alice" print(person2.age) # выводит 25
Также вы можете использовать индексацию, как с обычными кортежами:
print(person1[0]) # выводит "Alice" print(person2[1]) # выводит 25
Кроме того, именованные кортежи поддерживают разбор (unpacking):
name, age, city = person1 print(name, age, city) # выводит "Alice 30 New York"
Как изменить значение поля именованного кортежа
Именованные кортежи являются неизменяемыми, то есть значения их полей не могут быть изменены после создания. Однако, вы можете использовать метод _replace()
для создания нового экземпляра с измененными значениями:
person1 = person1._replace(age=31) print(person1) # выводит "Person(name='Alice', age=31, city='New York')"
Обратите внимание, что в этом случае исходный экземпляр person1
не изменяется, а создается новый.
Вывод
Именованные кортежи — это удобный инструмент для работы с небольшими наборами данных, особенно когда важна неизменяемость и быстродействие. Они позволяют легко создавать простые классы с именованными полями и предоставляют удобный доступ к атрибутам с использованием точечной нотации.
Добавить комментарий