🐛 Типичные ошибки при повторении

⚡ Кратко

Сверяйте сообщение об ошибке с причиной и исправлением. Воспроизведите хотя бы одну ошибку самостоятельно и затем устраните её.

Ошибка 1. Путаница в порядке MRO

Неверно думать, что Python сначала проверяет всех родителей одного уровня, а потом общего предка. На самом деле используется обход в глубину слева направо.

Для D(B, C), где B(A) и C(A), порядок: D → B → C → A → object, а не D → B → A → C.

Ошибка 2. Забыть проверку в миксине

class AuthMixin:
    def login(self):
        print(f"{self.username} вошёл.")  # AttributeError, если username нет

Используйте hasattr() или инициализируйте обязательные атрибуты в дочернем классе.

Ошибка 3. Использовать наследование вместо композиции

class Engine:
    pass


class Car(Engine):  # Car не является двигателем
    pass

Лучше:

class Car:
    def __init__(self, engine: Engine) -> None:
        self.engine = engine

Ошибка 4. Прямое обращение к приватному атрибуту

book = Book("1984")
print(book.__title)  # AttributeError

Приватные атрибуты манглируются. Используйте публичный метод или свойство.