Olá Gustavo, tudo bem com você?
Peço desculpas pela demora no retorno.
Fico feliz em ver sua participação no fórum da Alura. Esse mergulho no aprendizado explorando diferentes maneiras de trabalhar com orientação a objetos em Python é muito importante.
Realizar a chamada de uma função através de uma classe e passar para a função o objeto como parâmetro é uma forma que funciona, no entanto, essa forma pode ser menos intuitiva e menos utilizada na prática. Já que será necessário realizar primeiramente a criação de um objeto da classe em questão, para logo após realizar a chamada do método através da classe.
O exemplo Jogo.incremente(jogo)
, funciona porque o primeiro parâmetro do método incremente
é o objeto da classe, que por convenção chamado de self
. Assim, você está fornecendo explicitamente a referência para a instância da classe.
Já em relação ao acesso aos atributos da classe, essa forma de chamada não funciona. Isso ocorre porque, diferentemente dos métodos, os atributos devem ser acessados diretamente através do objeto, pois, os atributos serão criados no momento em que o objeto é instanciado.
Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!