Шаг 73.
Python: тонкости программирования.
Классы и ООП. Чем полезны именованные кортежи (общие сведения)

    На этом шаге мы кратко охарактеризуем кортежи.

    Python поставляется со специализированным контейнерным типом namedtuple, то есть именованным кортежем. И этот тип, по всей видимости, не привлекает того внимания, которое он заслуживает. Именованный кортеж представляет собой одно из тех удивительных функциональных средств языка Python, которое спрятано у всех на виду.

    Именованные кортежи могут быть отличной альтернативой определению класса вручную, и у них есть некоторые другие интересные свойства, с которыми мы хотим вас познакомить в следующих шагах.

    Итак, что же такое именованный кортеж и в чем проявляется его исключительность? Именованные кортежи лучше всего представить как расширение встроенного типа данных tuple.

    Кортежи Python - это простая структура данных, предназначенная для группирования произвольных объектов. Кроме того, кортежи не могут изменяться - после их создания их нельзя изменять. Ниже приведен короткий пример:

>>> tup = ('привет', object(), 42)
>>> tup
('привет', <object object at 0x000001A44A0ECC20>, 42)
>>> tup[2]
42
>>> tup[2] = 23
Traceback (most recent call last):
.   .   .
    tup[2] = 23
TypeError: 'tuple' object does not support item assignment

    Оборотной стороной простых кортежей является то, что данные, которые вы в них храните, могут быть извлечены только адресацией посредством целочисленных индексов. Вы не можете назначать имена отдельным свойствам, хранящимся в кортеже. А это может повлиять на удобочитаемость программного кода.

    Кроме того, кортеж всегда является вспомогательной структурой. Трудно гарантировать, что у двух кортежей будет одно и то же количество полей и одинаковые хранящиеся в них свойства. В результате появляется возможность беспрепятственно вносить ошибки "по недоразумению", просто перепутав порядок следования полей.

    На следующем шаге мы поговорим о назначении именованных кортежей.




Предыдущий шаг Содержание Следующий шаг