Подтвердить что ты не робот

Вызов метода базового класса в Python

У меня есть два класса A и B, а A - базовый класс B.

Я читал, что все методы в Python являются виртуальными.

Итак, как я могу вызвать метод базы, потому что, когда я пытаюсь вызвать его, метод производного класса вызывается как ожидалось?

>>> class A(object):
    def print_it(self):
        print 'A'


>>> class B(A):
    def print_it(self):
        print 'B'


>>> x = B()
>>> x.print_it()
B
>>> x.A ???
4b9b3361

Ответ 1

Использование super:

>>> class A(object):
...     def print_it(self):
...             print 'A'
... 
>>> class B(A):
...     def print_it(self):
...             print 'B'
... 
>>> x = B()
>>> x.print_it()                # calls derived class method as expected
B
>>> super(B, x).print_it()      # calls base class method
A

Ответ 2

Два способа:


>>> A.print_it(x)
'A'
>>> super(B, x).print_it()
'A'