Что нужно знать о модели данных Python

Что нужно знать о модели данных 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.

UML class diagram with fundamental collection types. Method names in italic are abstract, so they must be implemented by concrete subclasses such as list and dict. Picture from the Book Fluent Python

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

Азбука коллекции объединяет три основных интерфейса, которые должны быть реализованы в каждой коллекции:

* Iterable для поддержки для, распаковки и других форм итерации * Размер для поддержки встроенной функции len * Контейнер для поддержки оператора in

.

Имейте в виду, что не требуется наследовать ни от одной из этих ABC, например, любой класс, который реализует __len__, удовлетворяет Sized. > интерфейс.


Также опубликовано (полностью) здесь


Дополнительная литература


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE