Выполнить метод родительского класса без вызова super ()

Jivan спросил: 11 марта 2019 в 07:38 в: python

У нас есть следующая структура класса:

class NamePrinter():
    def phone():
        print(self.name)    def email():
        print(self.name)class PhoneCaller(NamePrinter):
    def __init__(self, name, number, mail):
        self.name = name
        self.number = number
        self.mail = mail    def phone(self):
        # here, NamePrinter.phone() should be executed
        compose_number(self.number)    def email(self):
        # here, NamePrinter.email() should be executed
        compose_mail(self.mail)

Я хочу, чтобы NamePrinter.phone() выполнялся при вызове PhoneCaller.phone(), без необходимости упомянуть super.phone() в PhoneCaller.

Идея состоит в том, что единственная модификация, которая будет применена к PhoneCaller для того, чтобы он выполнял поведение NamePrinter при выполнении PhoneCaller.phone, заключается в том, что PhoneCaller наследуется от родитель, и ничего более. В частности, нет необходимости изменять какой-либо отдельный метод PhoneCaller.

Проще говоря:

  • PhoneCaller наследуется от NamePrinter = > имя печатается перед составлением номера
  • PhoneCaller не наследуется от NamePrinter = > имя не печатается
  • Нет необходимости возиться с PhoneCaller.phone

Возможно ли это?

0 ответов