Imagem de fundo

Herança de classes em orientação a objetos necessita de alguns cuidados por parte dos p...

Questão 29

Herança de classes em orientação a objetos necessita de alguns cuidados por parte dos programadores, pois pode gerar ambiguidade quando uma classe herda métodos e atributos de mais de uma classe. Python resolve essa ambiguidade aplicando o algoritmo “MRO” (“Method Resolution Order” – Ordem de Resolução de Método, em tradução livre). A chamada do método “my-func” através da instância “d” da classe “D”, utilizando o algoritmo MRO, resultará no acesso desse método (nas diversas classes) na seguinte ordem:


class A(object):

def my_func(self):

print("Calling this from A")


class B(A):

pass


class C(A):

def my_func(self):

print("Calling this from C")


class D(B, C):

pass


d = D()

d.my_func()

Fonte: https://arvimal.blog/2016/05/30/method-resolution-order-object-oriented-programming/
A

Class D → Class B → Class C, imprimindo “Calling this from C” no terminal.

B

Class D → Class B → Class A, imprimindo “Calling this from A” no terminal.

C

Class D → Class C, imprimindo “Calling this from C” no terminal.

D

Class B → Class A, imprimindo “Calling this from A” no terminal.

E

Class A, imprimindo “Calling this from A” no terminal.