oop
Объектно-ориентированное программирование
Пошаговое руководство: как в Python получить атрибут класса только если он определён в самом классе (без наследования). Объяснение __dict__/vars(), отличие от getattr/hasattr, дескрипторы и sentinel.
Принцип подстановки Лисков (LSP) в ООП: определение, формальная формулировка, примеры правильной реализации и классических нарушений вроде квадрат/прямоугольник. Как соблюдать LSP в коде.
Что такое @classmethod и @staticmethod в Python? Чем они отличаются, когда использовать декоратор classmethod или staticmethod. Примеры кода, наследование и зачем нужны эти декораторы в классах Python.
Подробное объяснение разницы между методами __str__ и __repr__ в Python. __str__ для человекочитаемого вывода в print(), __repr__ для отладки и eval(). Примеры, лучшие практики и fallback-механизм.