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

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

  • class Child(Parent): — наследование.
  • super().__init__(...) — вызов родительского инициализатора.
  • super().method() — вызов родительского метода.
  • isinstance(obj, Class) — объект относится к классу или наследнику.
  • isinstance(obj, (A, B)) — проверка на несколько классов.
  • issubclass(Child, Parent) — класс является наследником.
  • Переопределение метода: заново определить метод с тем же именем в потомке.
  • В Python нет перегрузки методов по количеству аргументов.

Общий синтаксис наследования

class Parent:
    def __init__(self, value: str) -> None:
        self.value = value


class Child(Parent):
    def __init__(self, value: str, extra: int) -> None:
        super().__init__(value)
        self.extra = extra

    def method(self) -> None:
        super().method()  # если нужно расширить поведение родителя
        ...

Наследование

ЗаписьЧто делает
class Child(Parent):Дочерний класс наследует поля и методы родителя.
class Child:Равнозначно class Child(object):.

Использование super()

ЗаписьКогда использоватьПример
super().__init__(...)Родитель уже инициализирует общие поля.super().__init__(name)
super().method()Нужно расширить, а не заменить метод родителя.super().work()
Parent.method(self)Работает, но не рекомендуется: жёсткая привязка к имени.

Переопределение методов

СитуацияПоведение
Метод не переопределён в потомкеИспользуется реализация родителя.
Метод переопределён в потомкеИспользуется реализация потомка.
Переопределённый метод вызывает super().method()Сначала выполняется родитель, затем потомок.

Проверка типов

ФункцияПервый аргументВторой аргументРезультат
isinstance(obj, Class)ОбъектКласс или кортеж классовTrue, если объект относится к классу или его наследнику.
issubclass(Child, Parent)КлассКласс или кортеж классовTrue, если первый класс наследуется от второго.

Перегрузка

ЯзыкПоддержка перегрузкиЧто делать в Python
Java / C++Есть
PythonНет по умолчаниюИспользовать значения по умолчанию или проверку аргументов внутри метода.
Проверить по документации: аннотации типов и ClassVar выходят за рамки исходного материала. Подробнее см. typing и PEP 484.