Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
2 мин
734

Структуры данных в Python аналогичные C-структурам

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

Python славится своей гибкостью и простотой, однако иногда возникает необходимость использовать более сложные структуры данных, аналогичные структурам в языке C. Представим, что есть необходимость в создании класса для хранения данных о студенте: его имени, факультете и курсе. Обычный подход будет выглядеть следующим образом:

class Student():
    def __init__(self, name, faculty, year):
        self.name = name
        self.faculty = faculty
        self.year = year

Это может стать довольно утомительным, если количество полей увеличивается, или если нужно создать множество подобных классов.

В Python есть несколько способов создания структур данных, аналогичных C-структурам. Один из них — использование модуля collections и его функции namedtuple.

При помощи namedtuple можно создать класс с определенными полями, который будет иметь предопределенные методы, такие как init или repr:

from collections import namedtuple

Student = namedtuple('Student', ['name', 'faculty', 'year'])

Теперь можно создать экземпляр класса Student так же просто, как и обычный кортеж:

student1 = Student('Ivan', 'Math', 1)

Поля namedtuple доступны для чтения, как и обычные атрибуты объекта:

print(student1.name)  # выводит 'Ivan'

Таким образом, namedtuple позволяет упростить и ускорить создание классов для хранения данных. Однако следует помнить, что namedtuple, в отличие от обычных классов, не может быть изменен (это неизменяемый тип данных), и не поддерживает добавление новых методов или атрибутов к созданному классу.

Добавить комментарий

Подарок
Забрать подарок