¿Es posible en Python llamar a un método desde una clase específica en la jerarquía?

#!/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()

Usando llamadas super cada vez más altas. ¿Puedo también escribirlo de modo que el método de clase derivada f1 llame a f1 desde Base?

0
Klaus 12 ene. 2017 a las 15:38

1 respuesta

La mejor respuesta

Si sabe cómo se llama la clase (Base en este caso) puede llamar a sus métodos directamente:

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

Si necesita profundizar en el orden de resolución del método , puede meterse con Derived2.__mro__ (esto llama al primer hijo de object):

 class Derived2(Derived):
    def f1(self):
        print("f2 from Derived2")
        Derived2.__mro__[-2].f1(self)
0
hiro protagonist 12 ene. 2017 a las 16:13