Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Entendendo melhor o self e o construtor

Vemos que na aula é mostrado a seguinte estrutura:

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        print("construindo obj... {}".format(self))
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite


conta = Conta(123, "nico", 55.5, 1000.0)
conta2 = Conta(321, "Marco", 100.0, 1000.0)

conta.numero

conta2.titular

Porém, para um melhor entendimento de como que funciona o código eu alterei apenas os nomes das variáveis (selfs)

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        print("construindo obj... {}".format(self))
        self.numeroself = numero
        self.titularself = titular
        self.saldoself = saldo
        self.limiteself = limite


conta = Conta(123, "nico", 55.5, 1000.0)
conta2 = Conta(321, "Marco", 100.0, 1000.0)

conta.numeroself

conta2.titularself

então quando for fazer uma pesquisa por exemplo, dos valores é legal ter ideia que ele busca pelo self (reforçando ainda mais a didática). Acaba ficando bastante complicado quando é repetido várias vezes a mesma váriavel durante o momento que está aprendendo.

1 resposta
solução!

Olá Jean, tudo bem com você?

Fico feliz em ver sua participação no fórum Alura. Sua dica será muito importante para o desenvolvimento dos alunos e alunas. O modelo apresentado auxilia na compreensão de que está sendo feito o acesso ao valor de um atributo de um objeto, ficando assim mais didático.

O uso de nomes explícitos para as variáveis, métodos, classes e demais objetos do Python é muito importante e faz parte das boas práticas de programação. A linguagem de programação Python assim como outras linguagens, possui um padrão de nomenclaturas, para os atributos e variáveis, o padrão usado será o snake_case. Neste padrão, as palavras são escritas usando letras minúsculas e são separadas por um underscore (_).

Recomendo que use o padrão snake_case no momento em que é realizada a declaração dos atributos da classe. Por se tratar de duas palavras, o uso do padrão irá facilitar na leitura da pessoa programadora. Abaixo um exemplo de mudança.

def __init__(self, numero, titular, saldo, limite):
    print("construindo obj... {}".format(self))
    self.numero_self = numero
    self.titular_self = titular
    self.saldo_self = saldo
    self.limite_self = limite

Lembrando que após realizar as mudanças e salvar o arquivo, o acesso aos atributos devem ser feito usando o novo padrão, como apresentado abaixo.

conta.numero_self

Para aprimorar ainda mais o seu aprendizado, gostaria de recomendar a leitura do artigo abaixo que irá abordar sobre os padrões de nomenclatura utilizadas no Python, nele você conhecerá os padrões snake_case, PascalCase, SCREAMING_SNAKE_CASE entre outros.

Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.