1
resposta

Hora da prática: métodos especiais e atributos

1 - Implemente uma classe chamada Carro com os atributos básicos, como modelo, cor e ano. Crie uma instância dessa classe e atribua valores aos seus atributos.

class Carro:
    def __init__(self, modelo='', cor='', ano=int):
        self.modelo = modelo
        self.cor = cor
        self.ano = ano

uno = Carro("Fiat Uno", "cinza", 1994)

print(vars(uno))

2 - Crie uma classe chamada Restaurante com os atributos nome, categoria, ativo e crie mais 2 atributos. Instancie um restaurante e atribua valores aos seus atributos.

class Restaurante:
    nome = ''
    categoria = ''
    ativo = False
    funcionarios = int
    mesas = int

restaurante_praca = Restaurante()
restaurante_praca.nome = 'Praça'
restaurante_praca.categoria = 'Italiana'
restaurante_praca.funcionarios = 20
restaurante_praca.mesas = 10
print(vars(restaurante_praca))

3 - Modifique a classe Restaurante adicionando um construtor que aceita nome e categoria como parâmetros e inicia ativo como False por padrão. Crie uma instância utilizando o construtor.

class Restaurante:
    def __init__(self, nome='', categoria='', funcionarios=int, mesas=int, ativo=False):
        self.nome = nome
        self.categoria = categoria
        self.ativo = ativo
        self.funcionarios = funcionarios
        self.mesas = mesas

restaurante_praca = Restaurante("Praça", "Italiana", 20, 10)
print(vars(restaurante_praca))

4 - Adicione um método especial str à classe Restaurante para que, ao imprimir uma instância, seja exibida uma mensagem formatada com o nome e a categoria. Exiba essa mensagem para uma instância de restaurante.

class Restaurante:
    
    def __init__(self, nome='', categoria='', funcionarios=int, mesas=int, ativo=False):
        self.nome = nome
        self.categoria = categoria
        self.ativo = ativo
        self.funcionarios = funcionarios
        self.mesas = mesas
    
    def __str__(self):
        return f"{self.nome} | {self.categoria}"
    
restaurante_praca = Restaurante("Praça", "Italiana", 20, 10)
print(restaurante_praca)

5 - Crie uma classe chamada Cliente e pense em 4 atributos. Em seguida, instancie 3 objetos desta classe e atribua valores aos seus atributos através de um método construtor.

class Cliente:
    def __init__(self, cpf='', nome='', idade=int, sexo=''):
        self.cpf = cpf
        self.nome = nome
        self.idade = idade
        self.sexo = sexo
    

cliente1 = Cliente("123.456.789-00", "João", 30, "Masculino")
cliente2 = Cliente("987.654.321-00", "Maria", 25, "Feminino")
cliente3 = Cliente("456.789.123-00", "Ana", 28, "Feminino")

print(vars(cliente1))
print(vars(cliente2)) 
print(vars(cliente3))
1 resposta

Oi, Luiz! Como vai?

Agradeço por compartilhar.

Você organizou bem as classes Carro, Restaurante e Cliente, usando o método __init__ para inicializar os atributos e o __str__ para personalizar a saída do objeto. Um ajuste interessante é trocar valores como idade=int ou ano=int por valores padrão mais diretos, como idade=0 e ano=0, pois int representa o tipo, não um número inicial.

Uma dica interessante para o futuro é usar o método __str__ também na classe Cliente, deixando a impressão do objeto mais legível:

class Cliente:
    def __init__(self, cpf='', nome='', idade=0, sexo=''):
        self.cpf = cpf
        self.nome = nome
        self.idade = idade
        self.sexo = sexo

    def __str__(self):
        return f'{self.nome} | {self.idade} anos'

cliente1 = Cliente('123.456.789-00', 'Joao', 30, 'Masculino')
print(cliente1)

Esse código cria um cliente e mostra uma mensagem formatada ao usar print(cliente1), sem precisar chamar vars().

Conteúdos relacionados
Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!