Получи случайную криптовалюту за регистрацию!

PyWay – гуру Python 🐉

Логотип телеграм канала @pyway — PyWay – гуру Python 🐉 P
Логотип телеграм канала @pyway — PyWay – гуру Python 🐉
Адрес канала: @pyway
Категории: Технологии
Язык: Русский
Страна: Россия
Количество подписчиков: 1.10K
Описание канала:

Ваш путь в глубины Python. Узнай все секреты и фишки у нас! Если хотите сотрудничать – пишите @account1242 (условия @pyway_ads)

Рейтинги и Отзывы

3.67

3 отзыва

Оценить канал pyway и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

1

3 звезд

0

2 звезд

1

1 звезд

0


Последние сообщения 4

2021-02-02 11:00:33 Именованные кортежи или namedtuple

Тип namedtuple определен в стандартном модуле collections. Этот класс расширяет понятие кортежа, добавляя ему и его полям имена и, таким образом, наделяя их смысловой нагрузкой. Он позволяет писать более читаемый и самодокументируемый код. nametuple можно использовать и как обычный кортеж, или получать доступ к полям по именам, а не только индексам.

Вывоз конструктора namedtuple по сути вернет новый тип с определенными настройками. Пример:

from collections import namedtuple

# новый класс User с полями name и phone
User = namedtuple('User', ['name', 'phone'])

# конкретный юзер - экземпляр
user1 = User('John', phone='+79991002030')
print(user1) # User(name='John', phone='+79991002030')

Первый аргумент namedtuple – название класса, а второй – список параметров, который также может быть и строкой типа 'name, phone' или даже 'name phone'. Имена полей любые, кроме зарезервированных слов и имен, начинающихся с подчеркивания.

Работа с namedtuple:

>> Point = namedtuple('Point', ['x', 'y'])
>> p = Point(x=11, y=22) # создание
>>> p[0] + p[1] # доступ по индексам
33
>>> p.x + p.y # доступ по именам
33
>>> x, y = p # распаковка, как обычный кортеж
>>> x, y
(11, 22)
>>> p # читабельное repr
Point(x=11, y=22)
>>> Point._make((22, 33)) # создание из обычного кортежа или другого итерируемого объекта
Point(x=22, y=33)
>>> p._asdict() # представление в форме словаря
{'x': 11, 'y': 22}

Название двух последних начинаются с подчеркивания, это не значит, что мы вызываем приватные методы, это сделано намеренно, чтобы избежать конфликта с именами полей, если вдруг вам пришло бы в голову назвать поле "asdict".

Кроме описанных выше возможностей, namedtuple позволяет также:
1. Задавать значения поле по умолчанию
2. Добавлять док-стринги (подсказки) к самому классу и отдельным полям
3. Создавать копии кортежа с заменой полей
4. Расширять функциональность путем наследования

Об этим возможностях расскажу в следующем посте.
732 views08:00
Открыть/Комментировать