1
resposta

Porque não criar as instancias dentro do main?

Na aula 4 do curso Python: aplicando a Orientação a Objetos, no video From e import, o professor Guilherme faz o seguinte código:

from modelos.restaurante import Restaurante

restaurante_praca = Restaurante('praça', 'Gourmet')
restaurante_mexicano = Restaurante('Mexican Food', 'Mexicana')
restaurante_japones = Restaurante('Japa', 'Japonesa')

def main():
    Restaurante.listar_restaurantes()

if __name__ == '__main__':
    main()

Minha dúvida é:

Ele poderia ter feito as instancias dentro do main?e se não qual o motivo?

Da seguinte forma:

# Da pasta modelos>restaurante, importe a classe Restaurant
from modelos.restaurante import Restaurante

# Tudo criando instancia dentro do main
def main():
    # Instanciando algumas classes (criando alguns objetos) 
    restaurante_praca = Restaurante('praça','Italiano')
    restaurante_praca.alterar_estado()
    restaurante_rococo = Restaurante('rcoco','Italiano')
    restaurante_mandu = Restaurante('mandu','Arâbe')
    restaurante_coco_bambu = Restaurante('coco Bambu','Italiano')
    restaurante_outback = Restaurante('outback','Australiano')

    Restaurante.listar_restaurantes()
    

# Se for o arquivo principal, execute o main()
if __name__ == '__main__':
    main()

Alguem pode me sanar esta dúvida?

1 resposta

Olá, Andre! Entendo sua dúvida e é uma ótima pergunta!

Sim, você poderia criar as instâncias dentro da função main(). No entanto, a decisão de onde criar as instâncias depende muito do contexto do seu programa e do que você pretende fazer com essas instâncias.

No exemplo do professor Guilherme, as instâncias dos restaurantes são criadas fora da função main(), mas ainda dentro do escopo global do script. Isso significa que essas instâncias podem ser acessadas em qualquer lugar do script, não apenas dentro da função main(). Isso pode ser útil se você precisar usar essas instâncias em outras partes do seu código.

Por outro lado, se você criar as instâncias dentro da função main(), elas só existirão dentro do escopo dessa função. Isso significa que você não poderá acessá-las fora da função main(). Isso pode ser útil se você quiser limitar o escopo das suas instâncias para evitar conflitos de nomes ou se você quiser que as instâncias sejam destruídas quando a função terminar.

No final das contas, a decisão de onde criar as instâncias depende do que você precisa para o seu código. Ambas as abordagens têm seus usos e podem ser apropriadas em diferentes situações.

Espero ter ajudado e bons estudos!