Сообщить об ошибке.

Краткий обзор раздела: Классы в языке Python, общие моменты.

Содержание с кратким описанием:

ОБЗОР: Классы в языке Python, общие моменты.
Классы предоставляют средства объединения данных и функциональности вместе. Создание нового класса создает новый тип объекта, позволяя создавать новые экземпляры этого типа. Экземпляры класса также могут иметь методы, определяемые его классом, для из
Пространство имен и область видимости в классах в Python.
Пространство имен - это отображение имен, определенных в объектах. Большинство пространств имен в настоящее время реализованы в виде словарей Python. Области видимости определяются статически, но используются динамически. В любой момент во время выпо
Определение классов в Python.
Определения классов, так-же как определения функций, должны быть выполнены до того, как они окажут какой-либо эффект. Вполне возможно, что определение класса можно поместить в ветвь оператора if или определить класс внутри функции.
Объект класса в Python.
Объекты класса поддерживают два вида операций: ссылки на атрибуты и создание экземпляров. Атрибуты - это имена, которые были определены в пространстве имен класса при создании объекта класса. Операция создания экземпляра - ”вызов" объекта класса.
Создание экземпляра класса в Python.
Единственные операции, понятные экземплярам класса, являются ссылками на атрибуты. Существует два вида допустимых имен атрибутов, атрибуты данных и методы класса.
Метод экземпляра класса в Python.
Объект метода создается путем упаковки указателей объекта экземпляра и объекта функции, только что найденных вместе в абстрактном объекте: это объект метода. Когда объект метода вызывается со списком аргументов, новый список аргументов создается из э
Что такое метод класса в Python и зачем нужен.
Обычно в Python методы класса отмечаются декоратором @classmethod. Метод класса вместо того, чтобы принимать аргумент self, принимает аргумент cls. При вызове метода этот аргумент указывает на сам класс, а не на экземпляр класса. Следовательно он не может изменять состояние экземпляра объекта.
Что такое статический метод в классах Python и зачем нужен.
Статические методы класса отмечаются декоратором @staticmethod. Этот тип метода не принимает ни параметра self как метод экземпляра класса, ни параметра cls как метод класса. При этом, конечно, статический метод может принимать произвольное количество других параметров. Не может изменять ни состоян
Атрибуты класса и переменные экземпляра класса в Python.
Переменные экземпляра класса предназначены для данных, уникальных для каждого экземпляра класса, а переменные класса/атрибуты данных класса - для атрибутов и методов, общих для всех экземпляров класса.
Закрытые/приватные методы и переменные класса Python.
Имя с префиксом подчеркивания, например _spam, следует рассматривать как непубличную часть API, будь то функция, метод или элемент данных. Это следует считать деталями реализации и могут быть изменены без предварительного уведомления.
Наследование классов в Python.
Выполнение определения производного класса `DerivedClassName` происходит так же, как и для базового класса `BaseClassName`. Когда объект класса создан, базовый класс `BaseClassName` запоминается. Это используется для разрешения ссылок на атрибуты.
Множественное наследование классов в Python.
Порядок разрешения метода (MRO - method resolution order) динамически изменяется для поддержки совместных вызовов `super()`.
Что такое миксины в Python и как их использовать.
Миксины или как еще их называют примеси - это ограниченная форма множественного наследования. В частности, в контексте языка Python, миксин - это родительский класс, который предоставляет функциональные возможности подклассам, но не предназначен для создания экземпляров самого себя.
Класс Python как структура данных, подобная языку C.
Куску кода Python, который ожидает определенный абстрактный тип данных, часто можно передать класс, который эмулирует методы этого типа данных.
Создание пользовательских типов данных в Python.
Python позволяет программистам, с помощью обычных классов, создавать свои собственные типы данных - типы, которые группируют несколько отдельных переменных вместе. Такие типы позволяет группировать переменные разных типов в единое целое.
Специальные (магические) методы класса Python.
Класс может реализовывать определенные операции, которые вызываются специальным синтаксисом (например, арифметические операции или индексирование и срезы), определяя методы со специальными именами. Это подход Python к перегрузке операторов, позволяющий классам определять собственное поведение по от
Базовая настройка классов Python магическими методами.
В разделе рассмотрена базовая пользовательская настройка классов Python специальными (магическими) методами. Предназначение методов: __new__, __init__, , __del__, __repr__, __str__, __bytes__, __format__, __hash__, __bool__, а так же все методы сравнения.
Настройка доступа к атрибутам класса Python.
В разделе рассматриваются специальные (магические) методы, которые могут быть определены для настройки поведения при доступе к атрибутам экземпляров класса: __getattr__, __getattribute__, __setattr__, __deltattr__, __dir__.
Дескрипторы классов в Python.
В общем случае, дескриптор - это атрибут объекта с "привязкой поведения", доступ к которому был переопределен методами в протоколе дескриптора. Этими методами являются __get__(), __set__() и __delete__(). Если какой-либо из этих методов определен для объекта, то он называется дескриптором.
Специальный атрибут __slots__ класса Python.
Специальный (магический) метод __slots__ позволяют явно объявлять элементы данных (например, свойства) и запрещать создание словаря __dict__ и __weakref__. Пространство, сэкономленное от НЕ использования __dict__, может быть значительным! Скорость поиска атрибутов также может быть значительно увели
Специальный метод __init_subclass__ класса Python.
Когда класс наследуется от другого класса, то для этого класса вызывается метод __init_subclass__. Таким образом, можно писать классы, которые изменяют поведение подклассов.
Определение метаклассов metaclass в Python.
По умолчанию классы создаются с использованием класса type(). Тело класса выполняется в новом пространстве имен, а имя класса локально привязано к результату выполнения type(name, bases, namespace). Процесс создания класса можно настроить, передав ключевой аргумент metaclass в строке определения кл
Эмуляция контейнерных типов в классах Python.
Следующие методы могут быть определены для реализации контейнерных объектов. Рассмотрены магические методы: __len__, __length_hint__, __getitem__, __setitem__, __delitem__, __missing__, __reversed__ и __contains__.
Другие специальные методы класса в Python.
Настройка проверок экземпляра и подкласса. Эмуляция универсальных "generic" типов. Эмуляция вызываемых объектов.
Как Python ищет специальные методы в классах.
Для пользовательских классов неявные вызовы специальных методов гарантированно работают правильно только в том случае, если они определены для типа объекта (в теле класса как фактический метод), а не в словаре экземпляра объекта.