Вызов метода базового класса в Python - PullRequest
38 голосов
/ 20 января 2011

У меня есть два класса 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 ???

Ответы [ 2 ]

39 голосов
/ 20 января 2011

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

>>> 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
26 голосов
/ 20 января 2011

Два способа:

<code>
>>> A.print_it(x)
'A'
>>> super(B, x).print_it()
'A'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...