🐛 Типичные ошибки при повторении
⚡ Кратко
Сверяйте сообщение об ошибке с причиной и исправлением. Воспроизведите хотя бы одну ошибку самостоятельно и затем устраните её.
Ошибка 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
Приватные атрибуты манглируются. Используйте публичный метод или свойство.