Coletânea Python do ZERO às Redes Neurais Artificiais
super( )
Outra funcionalidade que eventualmente pode ser utilizada é a de, justamente executar uma determinada ação da classe mãe e posteriormente a sobrescrever, isso é possível por meio da função reservada super( ).
Esta função em orientação a objetos faz com que seja respeitada a hierarquia de classe mãe / super classe em primeiro lugar e posteriormente as classes filhas / sub classes.
Ainda no mesmo exemplo, neste caso, primeiro será executada a Acao1 de Pessoa e em seguida ela será sobrescrita por Acao1 de SaveJogador1.
Avançando com nossa linha de raciocínio, ao se trabalhar com heranças deve-se tomar muito cuidado com as hierarquias entre as classes dentro de sua ordem de leitura léxica.
Raciocine que o mesmo padrão usado no exemplo anterior vale para qualquer coisa, até mesmo um método construtor pode ser sobrescrito, logo, devemos tomar os devidos cuidados na hora de usar os mesmos.
Também é importante lembrar que por parte de sobreposições, quando se trata de heranças múltiplas, a ordem como as classes são passadas como parâmetro irá influenciar nos resultados.
Apenas como exemplo, repare que foram criadas 4 classes, Pessoa, Acao1, Acao2 e SaveJogador1 respectivamente, dentro de si apenas existe um método de classe designado a exibir uma mensagem.
Para esse exemplo, o que importa é a forma como SaveJogador1 está herdando características de Acao1 e Acao2, como dito anteriormente, essa ordem ao qual as classes são passadas como parâmetro aqui influenciará os resultados da execução do código.
Nesse exemplo, SaveJogador1(Acao1, Acao2), o retorno será: Sistema pronto para uso
Exatamente a mesma estrutura anterior, porém com ordem inversa, SaveJogador1(Acao2, Acao1), o retorno será de acordo com esta justaposição forçada.
Apenas fazendo um adendo, caso estes tópicos ainda gerem alguma dúvida para você. Uma forma de diferenciarmos a forma como tratamos as interações entre classes dentro do Python é a seguinte:
Associação: Se dá quando uma classe usa outro ou algum objeto de outra.
Agregação: Se dá quando um ou mais objetos de classe é compartilhado, usado por duas ou mais classes (para que não seja necessário programar esse atributo para cada uma delas).
Composição: Se dá quando uma classe é dona de outra pela interligação de seus atributos e a forma sequencial como uns dependem dos outros.
Herança: Se dá quando estruturalmente um objeto é outro objeto, no sentido de que ele literalmente herda todas características e funcionalidades do outro, para que o código fique mais enxuto.