1
resposta

Não Resolvido (com sep="/")

Não consigo acessar o resultado como deveria.

class Data():

def init(self, dia, mes, ano): self.dia = dia self.mes = mes self.ano = ano

def dataformatada(self, dia, mes, ano): print(self.dia, self.mes, self.ano, sep="/")

data =Data(21,11,2007)

#data.dataformatada

#data

1 resposta

Oioii, tudo bem?

Quando estamos trabalhando com Classes no Python, precisamos criar o método construtor __init__ para que ele crie o objeto daquela classe, e nós consigamos usufruir dos atributos e métodos dela. Acontece que ao escrever seu construtor, não foi colocado os dois underlines (__) antes e depois do nome init, o que fez com que seu código não identificasse o método e não conseguisse construir o objeto da classe.

Adiante, você já foi passado os atributos para a Classe Data, basta que se passe o parâmetro self na função dataformatada, visto que ele já iria referenciar todos os seus atributos devido ao método __init__ anteriormente configurado. Caso se deseje adicionar outros atributos apenas nessa função, é recomendado utilizar essa configuração.

Assim, seu código ficará da seguinte maneira:

class Data():

    def __init__(self, dia, mes, ano): 
        self.dia = dia 
        self.mes = mes 
        self.ano = ano

    def dataformatada(self): 
        print(self.dia, self.mes, self.ano, sep="/")

data = Data(21,11,2007)
data.dataformatada()

Resultado:

>>>21/11/2007

E ele passa a funcionar corretamente :) Uma dica que eu deixo para você é sobre a convenção snake_case na estruturação de funções do python, utilizado para boas práticas de criação de algoritmos. Desse modo, sua função dataformatada ficaria com o formato data_formatada. Gostaria de indicar como recomendação, a leitura do artigo a seguir:

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!