определен @abstractmethod do_smthn(self)
То питон не даёт перегрузить этот метод в наследуемых классах вот так:
self.do_smthn = self.do_concrete() в конструкторе - вызывает ошибку и ругается что do_smthn не перегружен
Только если переименовать do_concrete в do_smthn
В чем отличие этих подходов?
Хотя если не использовать ABC, всё работает без ошибок и никаких различий в поведении нет
полагаю, что проверка срабатывает в момент создания наследуемого класса его метаклассом, метакласс знать не знает, что ты внутри __init__ перекрываешь какие-то там методы
вру, проверка внутри __new__ срабатывает, до переопределений не доходит
Обсуждают сегодня