Вызов метода базового класса в 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 ???
Ответы
Ответ 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'