🔖 Справочник команд и синтаксиса

⚡ Краткий справочник

  • class Child(Parent1, Parent2): — множественное наследование.
  • hasattr(obj, "name") — проверка наличия атрибута.
  • Class.__mro__ — кортеж классов в порядке разрешения методов.
  • super().method() — вызов следующего метода в MRO.
  • Миксин — вспомогательный класс с поведением, без собственного состояния.
  • Композиция — объект создаёт внутренний сам; агрегация — получает извне.

Общий синтаксис

class Parent1:
    def method(self) -> None:
        ...


class Parent2:
    def method(self) -> None:
        ...


class Child(Parent1, Parent2):
    def method(self) -> None:
        super().method()  # следующий метод в MRO

Функция hasattr

ЗаписьЧто делаетПример
hasattr(obj, "attr")Возвращает True, если у объекта есть атрибутhasattr(user, "email")
hasattr(obj, "method")Проверяет наличие методаhasattr(report, "save")
hasattr(Class, "attr")Проверяет наличие атрибута у классаhasattr(Book, "library_name")

MRO и __mro__

ЗаписьЧто возвращаетПример
Class.__mro__Кортеж классов в порядке поиска методовD.__mro__
Class.mro()Тот же порядок в виде спискаD.mro()
help(Class)Показывает MRO и структуру классаhelp(D)

Функция super()

ЗаписьКогда использоватьПример
super().__init__()Вызов следующего __init__ в MROsuper().__init__(name)
super().method()Вызов следующего method в MROsuper().action()
Parent.method(self)Явный вызов конкретного родителя (избегайте в множественном наследовании)A.action(self)

Миксины

ПризнакОписание
ИмяОбычно заканчивается на Mixin
СостояниеОбычно не определяет __init__
НазначениеДобавляет поведение через множественное наследование
ИспользованиеТолько вместе с другими классами

Композиция vs Агрегация

АспектКомпозицияАгрегация
СозданиеВнутренний объект создаётся внутри внешнегоВнешний объект получает готовый объект извне
СвязьЖёсткая («часть-целое»)Слабая («использует»)
Жизненный циклВнутренний объект не живёт без внешнегоВнутренний объект может существовать отдельно
ПримерMenu создаёт ExitButtonTeacher получает University

Параметры и аннотации

ПараметрТипОписание
selfэкземпляр классаСсылка на текущий объект в обычном методе
clsклассСсылка на класс в @classmethod
-> NoneаннотацияПодсказка о типе возвращаемого значения
Проверить по документации: hasattr, super, isinstance и issubclass описаны в Built-in Functions. Про MRO — в Multiple Inheritance.