Шаг 76.
Python: тонкости программирования. Классы и ООП. Чем полезны именованные кортежи. Встроенные вспомогательные методы

    На этом шаге мы перечислим эти методы.

    Помимо свойства _fields, каждый экземпляр именованного кортежа также предлагает еще несколько вспомогательных методов, которые могли бы быть вам полезны. Все их имена начинаются с одинарного символа подчеркивания (_), который обычно сигнализирует о том, что метод или свойство являются "приватными" и не являются частью стабильного публичного интерфейса класса или модуля.

    Правда, в случае с именованными кортежами согласованное правило именования с символом подчеркивания несет в себе другой смысл. Эти вспомогательные методы и свойства являются составной частью публичного интерфейса класса namedtuple. Вспомогательные методы получают такие имена, чтобы избежать конфликтов имен с определяемыми пользователями полями кортежей. Так что можете спокойно ими пользоваться, если они вам нужны!

    Хочу показать вам несколько сценариев, где могли бы пригодиться вспомогательные методы именованного кортежа. Давайте начнем со вспомогательного метода _asdict(). Он возвращает содержимое именованного кортежа в виде словаря:

>>> my_car._asdict()
{'цвет': 'красный', 'пробег': 3812.4}

    Этот метод очень полезен для предотвращения опечаток в именах полей во время генерирования результата в формате JSON, например:

>>> import json
>>> json.dumps(my_car._asdict(), ensure_ascii=False)
# False для кириллицы
'{"цвет": "красный", "пробег": 3812.4}'

    Метод _replace() - это еще один полезный вспомогательный метод. Он создает (мелкую) копию кортежа и позволяет вам выборочно заменять некоторые его поля:

>>> my_car._replace(цвет='синий')
Авто(цвет='синий', пробег=3812.4)

    Наконец, метод класса _make() может использоваться для создания новых экземпляров класса namedtuple из (итерируемой) последовательности:

>>> Car._make(['красный', 999])
Авто(цвет='красный', пробег=999)

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




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