2017-01-12 4 views
0

Возможно ли в python вызвать метод из класса в иерархии?метод вызова python указанного базового класса

#!/usr/bin/python3 

class Base: 
    def f1(self): 
     print("f1 from Base") 

class Derived (Base): 
    def f1(self): 
     print("f1 from Derived") 

class Derived2 (Derived): 
    def f1(self): 
     print("f2 from Derived2") 
     super().f1() 


d2 = Derived2() 
d2.f1() 

Использование super звонков, когда-либо следующих выше. Могу ли я также написать его так, чтобы метод производного класса f1 вызывал f1 из базы?

ответ

0

, если вы знаете, что класс называется (Base в данном случае), вы можете вызвать его методы напрямую:

class Derived2(Derived): 
    def f1(self): 
     print("f2 from Derived2") 
     Base.f1(self) 

, если вам нужно идти глубже в разрешении порядка метод, вы можете связываться с Derived2.__mro__ (это первый ребенок от object):

class Derived2(Derived): 
    def f1(self): 
     print("f2 from Derived2") 
     Derived2.__mro__[-2].f1(self)