ursolouco 0 Denunciar post Postado Setembro 29, 2008 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 Compartilhar este post Link para o post Compartilhar em outros sites
Felipe_ls 0 Denunciar post Postado Setembro 29, 2008 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 Compartilhar este post Link para o post Compartilhar em outros sites
ursolouco 0 Denunciar post Postado Setembro 29, 2008 Felipe_ls, Tranquilo, entendi sim! Abraço[]s Compartilhar este post Link para o post Compartilhar em outros sites
Tarantula 0 Denunciar post Postado Maio 22, 2009 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. Compartilhar este post Link para o post Compartilhar em outros sites