ООП — полезный механизм организации вашего кода. Классы позволяют группировать данные и код в новые типы данных. Также на базе классов можно создавать объекты, вызывая их конструкторы (имя класса, вызываемое как функция), которые в свою очередь вызывают метод __init__() класса. Методы представляют собой функции, связанные с объектами, а атрибуты — переменные, связанные с объектами. Все методы получают первый параметр self, которому присваивается текущий объект при вызове метода. Это позволяет методам присваивать значения атрибутам объекта и вызывать его методы.
Хотя Python не позволяет задать приватный или открытый уровень доступа для атрибутов, в языке принято использовать префикс _ для любых методов и атрибутов, которые должны вызываться или к которым следует обращаться из собственных методов класса. Соблюдение этого соглашения поможет предотвратить некорректное использование класса и перевод его в недействительное состояние, которое может привести к ошибкам. Вызов type(obj) возвращает объект класса для типа obj. Объекты класса включают атрибут __qualname___, который содержит строку с удобочитаемой формой имени класса.
Возможно, к этому моменту у вас возник вопрос: зачем вообще нужны хлопоты с классами, атрибутами или методами, когда все то же доступно с помощью функций? ООП — полезный механизм организации кода в нечто большее, чем обычный файл .py с сотней функций. Разбивая программу на несколько хорошо спроектированных классов, вы можете сосредоточиться на каждом классе по отдельности.
Методология ООП ориентирована на структуры данных и методы работы с этими структурами данных. Эта методология не является обязательной для всех программ, и, безусловно, злоупотребления ООП тоже возможны. Однако ООП позволяет использовать некоторые нетривиальные механизмы, о которых мы поговорим в следующих двух главах. Глава 16 посвящена первому из этих механизмов — наследованию.
Python. Чистый код для продолжающих
·
Свейгарт Эл