Что нужно знать о модели данных Python
8 марта 2023 г.Python — такой простой язык для изучения, но его очень сложно освоить. Одной из основ языка является модель данных.
Что такое модель данных и когда ее использовать?
Модель данных – это набор интерфейсов, формализующих строительные блоки самого языка Python, такие как последовательности, функции, итераторы, сопрограммы и т. д. Он используется постоянно, так как вы не можете написать соответствующий Pythonic код без него.
Как мне его использовать?
Короткий ответ: мы реализуем методы в этих интерфейсах.
Когда мы хотим, чтобы наши объекты поддерживали и взаимодействовали с фундаментальными языковыми конструкциями, такими как:
- Подборки
- Итерация
- Перегрузка оператора
- Асинхронное программирование и управляемые контексты
Особые методы
Возможно, вы сталкивались с этим методом __init__
и другими, написанными с двойным подчеркиванием в начале и в конце. Это специальный метод, служащий конструктором для вашего объекта.
Специальные методы предназначены для вызова интерпретатором Python, а не нами, мы просто реализуем их, если это необходимо, и мы используем предлагаемый нам синтаксический сахар, как с этим __add__
который вызывается оператором «+»:
var = 'hello'
var2 = ' world'
# this is how we should write
print(var + var2) # hello world
# this is not how we should write, meant to be called by Python Interpreter
print(var.__add__(var2)) # hello world
Объект Python также должен предоставлять пригодные для использования строковые представления самого себя, одно используется для отладки и ведения журнала, а другое — для представления конечным пользователям. Этими специальными методами являются __repr__
и __str__
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
def __str__(self):
# Default implementation, to change depending on user needs
return self.__repr__()
>>> p = Point(1, 2)
>>> p
Point(1, 2)
>>> p.x = 4
>>> p
Point(4, 2)
Существует более 100 специальных методов, большинство из которых реализуют арифметические, побитовые и операторы сравнения. Вот ссылка на полный список.< /p>
Реализуя специальные методы, ваши объекты могут вести себя как встроенные типы, обеспечивая выразительный стиль кодирования, который сообщество считает Pythonic.
API коллекций
API коллекции — это неотъемлемый модуль модели данных Python. Этот API предлагает нам интерфейсы для следующих типов:
* Последовательность, формализующая интерфейс встроенных функций, таких как список и str. * Mapping, реализованный с помощью dict, collections.defaultdict и т. д. * Set, интерфейс встроенных типов set и frozenset.
Все классы на диаграмме являются ABC или абстрактными базовыми классами. Каждая из лучших ABC имеет один специальный метод.
Азбука коллекции объединяет три основных интерфейса, которые должны быть реализованы в каждой коллекции:
* Iterable для поддержки для, распаковки и других форм итерации * Размер для поддержки встроенной функции len * Контейнер для поддержки оператора in
.Имейте в виду, что не требуется наследовать ни от одной из этих ABC, например, любой класс, который реализует __len__
, удовлетворяет Sized. > интерфейс.
Также опубликовано (полностью) здесь
Дополнительная литература
- Глава «Модель данных» в Справочнике по языку Python является каноническим источником по теме этого главу и большую часть этой книги.
- Кратко о Python, 3-е изд. Алекса Мартелли, Анны Рэйвенскрофт и Стива Холдена (O’Reilly) прекрасно описывает модель данных.
- Основной справочник по Python. п
Оригинал