(Python 3)питона множественное наследование вызова переопределены функциям в супер контексте
Я пытаюсь расширить класс с некоторой фантазией новых процедур форматирования, однако я хотел бы также, чтобы иметь возможность использовать процедуры форматирования в базовый класс.
class Plaintext(object):
def print_thing(self, thing):
print("plain", thing)
def print_blob(self, blob):
for thing in blob:
self.print_thing(thing)
def print_goober(self, blob):
print("plaintext")
self.print_blob(blob)
class Markdown(Plaintext):
def print_thing(self, thing):
print("mark", thing)
def print_goober(self, blob):
print("markdown")
self.print_blob(blob)
super().print_blob(blob)
newclass = Markdown()
newclass.print_goober([1,2,3])
При запуске, я получаю:
markdown
mark 1
mark 2
mark 3
mark 1
mark 2
mark 3
Как я могу получить newclass.print_goober() для вызова print_blob() первый в своей самостоятельной контексте, а затем в контексте BaseClass?
Выход я пытался получить был:
markdown
mark 1
mark 2
mark 3
plain 1
plain 2
plain 3
Мне нужно создать какой-то подмешать вещи делать?
Вашего 'print_thing()' метод быть переопределен в подклассе. Вот почему он печатает весь синтаксис 'mark' –
для вызова супер. Это должно быть '' 'super (Markdown, self) .print_blob (blob)' '' – navyad
@naveenyadav - В python3.x не была введена комбинация 'super()' shortcut. – mgilson