@abstractmethod
                  
                  
                      def test(self): 
                  
                  
                          print(«test»)
                  
                  
                  
                  
                  
                  Есть ли такие условия при которых мне выведется эта надпись «test»? Если не менять ничего в этом коде
                  
                  
                
по-ходу не
Нельзя сделать экземпляр абстрактного класса — должно кинуть исключение
Нет, только в наследниках то что) а зачем вообще использовать абстрактные классы в питоне, если не секрет?
Как интерфейсы. Ну и собственно как абстрактные классы)
В наследниках
Как интерфейсы есть протоколы
Ну наследники у которых не реализован этот метод тоже ведь абстрактные)
есть только с 3.8 но у них там под капотом по факту тоже абстрактные)
 
                      
                      
                    Ну наследники у которых не реализован этот метод тоже ведь абстрактные)
Ну да. Только их не нужно наследовать чтобы в хинтах юзать
Технически можно сделать Animal.test(42), и напечатается test
А какую проблему мы так решаем? Просто заставляем реализовать методы?
Хм, Это верно. Не подумал что кто то так может сделать
А откуда такой вопрос вообще возник?
И используем абстракцию в аннотациях вместо реализации
Да там долгая история)
 
                      
                      
                    >>> class Animal(ABC): ... @abstractmethod ... def test(self): ... print('test') ... >>> class Cat(Animal): ... def test(self): ... super().test() ... >>> Cat().test() test
Обсуждают сегодня