Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve!
Estou com uma simples dúvida. Veja se podem me ajudar
class One:
def method(self):
return 1;
class Two:
def method(self):
return 2;
class Tree(Two, One):
def funcao(self):
return 3;
Objeto = Tree()
print Objeto.method()
Se alteramos a ordem da declaração da herança
class Tree(One, Two): porque muda o resultado no método "method" ?
Abraços
Felipe_ls,
Tranquilo, entendi sim!
Abraço[]s
Só complementando a resposta:
Você pode usar qualquer um dos métodos de One ou de Two, por exemplo, se a classe One está em primeiro lugar na múltipla herança, ele retornará 1, mas se você quiser escolher qual dos métodos ele vai executar, você pode chamar:
print Two.method(Objeto)
E ele vai retornar 2.
Cara, isso acontece porque o Python aceita herança múltipla e também porque todos os métodos em Python são considerados iguais aos métodos "virtual" do C++.
Como nesse caso o método "method" é declarado nas duas classes que são extendidas na classe Tree, o Python automaticamente "detecta" esses métodos duplicados e vai sobreescrevendo os mesmos de acordo com a ordem da herança.
Entendeu?
Aqui é explicado mais ou menos isso também: http://docs.python.org/tut/node11.html