@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
Обсуждают сегодня