Oii, Moacir! Tudo bem?
Parabéns por colocar a mão na massa! Praticar é realmente a única maneira de fixar os conceitos de Orientação a Objetos. Analisei o seu código e tenho alguns pontos muito legais para destacar.
- Classe
Carro
Você resolveu o exercício de forma funcional, criando a classe e depois atribuindo valores diretamente à instância (meu_carro.modelo = ...). Isso funciona no Python porque a linguagem é dinâmica!
Dica Didática:
No seu código, ao definir modelo = '' logo abaixo de class Carro:, você criou o que chamamos de Atributos de Classe. Embora funcione, a convenção mais comum em POO (Programação Orientada a Objetos) para características que variam de carro para carro é usar o método construtor __init__, assim como você fez brilhantemente na classe Restaurante.
Isso garante que, assim que um carro nascer (for instanciado), ele já seja obrigado a ter essas características, evitando criar um carro "vazio" por acidente.
- Classe
Restaurante
Aqui seu código ficou excelente! Você foi além do básico e aplicou ótimas práticas:
- Construtor (
__init__): Definiu corretamente os atributos de instância. - Parâmetros opcionais: O uso de
ativo=False dentro do método (mesmo que no exercício pedisse no construtor, sua lógica de "Valor padrão" ali dentro está correta para inicialização). - Método
__str__: Adorei a formatação! O uso do .ljust(15) deixa a saída no terminal muito mais organizada e profissional (parecendo uma tabela). E a lógica ternária ("Ativo" if self.ativo else "Inativo") é uma forma muito elegante e "Pythônica" de escrever código.
Continue firme nos estudos.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!