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