Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ursolouco

Herança

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.