@beduin01

Зачем нужны абстрактные методы в Python?

В примере у метода помеченного как абстрактный реализовано тело:

@abstractmethod
    def tell(self):
        '''Вывести информацию.'''
        print('Имя:"{0}" Возраст:"{1}"'.format(self.name, self.age), end=" ")


Но потом при его реализации мы ему тело получается снова создаем:
def tell(self):
        SchoolMember.tell(self)
        print('Оценки: "{0:d}"'.format(self.marks))


Т.е. по идее строка:
print('Имя:"{0}" Возраст:"{1}"'.format(self.name, self.age), end=" ")


Полностью бесполезна.

Вопрос. Зачем?
  • Вопрос задан
  • 3401 просмотр
Решения вопроса 1
Абстрактные методы, по определению, не имеют реализации. Декоратор @abstractmethod выглядит как какой-то костыль существующий из-за того, что в Python нельзя объявить метод с пустым телом как это происходит в других ЯП, в нём хотя бы pass должен присутствовать. Зачем в этом примере добавили print в абстрактный метод знает только автор этого примера, оно не нужно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Абстрактные методы в Python нужны для того, чтобы их обязательно переопределили.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы