Fácil Python
Criando a classe Pessoa
Enunciado
Crie uma classe Pessoa com __init__ que recebe nome e idade, armazenando-os como atributos de instância. Adicione um método apresentar() que retorna uma string no formato "Meu nome é <nome> e tenho <idade> anos.".
Requisitos
- A classe se chama
Pessoa. __init__recebeself,nomeeidade.apresentar()retorna a frase exata no formato pedido.
Código inicial
class Pessoa:
def __init__(self, nome, idade):
# complete aqui
pass
def apresentar(self):
# complete aqui
pass
p = Pessoa("Ana", 30)
print(p.apresentar())
Saída esperada
Meu nome é Ana e tenho 30 anos.
Ver dica
Dentro de __init__, use self.nome = nome e self.idade = idade. No método, acesse com self.nome e self.idade.
Mostrar solução
class Pessoa:
def __init__(self, nome, idade):
# atributos de instância: cada objeto tem os seus
self.nome = nome
self.idade = idade
def apresentar(self):
# self dá acesso aos atributos do próprio objeto
return f"Meu nome é {self.nome} e tenho {self.idade} anos."
p = Pessoa("Ana", 30)
print(p.apresentar())
Passo a passo
- Definimos a classe
Pessoacomclass Pessoa:; ela é o molde para criar pessoas. - O método
__init__é chamado automaticamente ao fazerPessoa("Ana", 30). - Dentro dele,
self.nome = nomeguarda o valor recebido como atributo da instância. - O mesmo vale para
self.idade = idade. - O método
apresentarrecebeselfcomo primeiro parâmetro, obrigatório em métodos de instância. - Usamos uma f-string para montar a frase, acessando
self.nomeeself.idade. - Criamos o objeto
pe chamamosp.apresentar(), que devolve a string. printexibe o resultado no terminal.
Por que funciona
Cada vez que instanciamos Pessoa, o Python cria um objeto novo e roda __init__ com self apontando para esse objeto. Assim, self.nome e self.idade ficam guardados naquele objeto específico. Quando chamamos p.apresentar(), o self dentro do método é o mesmo objeto p, então os atributos certos são lidos.
Erros comuns
- Esquecer
selfna definição do método:def apresentar():geraTypeError: apresentar() takes 0 positional arguments but 1 was givenao chamarp.apresentar(). - Não usar
selfao acessar atributos: escreverreturn nomedentro deapresentarcausaNameError: name 'nome' is not defined. - Trocar o formato da frase (faltando ponto final, por exemplo) faz o teste falhar; copie exatamente o texto pedido.
Outra forma de resolver
É possível usar dataclasses para gerar __init__ automaticamente:
from dataclasses import dataclass
@dataclass
class Pessoa:
nome: str
idade: int
def apresentar(self):
return f"Meu nome é {self.nome} e tenho {self.idade} anos."
Vale quando a classe é só um contêiner de dados; aqui, escrever o __init__ na mão ajuda a entender o conceito.
Saída esperada
Meu nome é Ana e tenho 30 anos.