Я читал об абстрактном базовом классе и наткнулся на https://www.python-course.eu/python3_abstract_classes.php. Я получил общее представление о них, но нашел два противоречащих друг другу утверждения.
Подклассы абстрактного класса в Python не обязаны реализовывать абстрактные методы родительского класса.
и
Класс, производный от абстрактного класса, не может быть создан, пока не будут переопределены все его абстрактные методы.
Насколько я понимаю первое утверждение, производный класс не обязан реализовывать абстрактный метод родительского класса, что неверно. Я сделал пример программы, чтобы проверить это.
from abc import ABC, abstractmethod
class AbstractClassExample(ABC):
@abstractmethod
def do_something(self):
print("Some implementation!")
class AnotherSubclass(AbstractClassExample):
def just_another_method(self):
super().do_something()
print("The enrichment from AnotherSubclass")
x = AnotherSubclass() # TypeError: Can't instantiate abstract class AnotherSubclass with abstract methods do_something
x.do_something()
Я хотел бы объяснить, что означает первое утверждение (желательно с примерами).
x = AnotherSubclass()
, ваш код будет работать без ошибок. - person Sweeper   schedule 10.12.2019AnotherSubclass
мы должны реализовать методdo_something
, и я думаю, что первое утверждение противоречит этому. - person Pratik Gandhi   schedule 10.12.2019Subclasses of an abstract class in Python are not required to implement abstract methods of the parent class, but if you don't override then you won't be able to instantiate it.
- person Pratik Gandhi   schedule 10.12.2019