Oi, Mauricio! Tudo bem?
A diferença principal aqui está relacionada ao escopo e à forma como a variável restaurantes
é acessada. Quando utilizamos Restaurante.restaurantes.append(self)
, estamos acessando a lista restaurantes
como um atributo da classe Restaurante
, o que é importante porque restaurantes
é uma variável de classe, ou seja, ela é compartilhada por todas as instâncias da classe Restaurante
. Usar o nome da classe seguido de .
é a maneira correta de acessar variáveis de classe em Python.
Por outro lado, se tentarmos usar apenas restaurantes.append(self)
, o Python vai procurar por uma variável de instância chamada restaurantes
dentro do contexto do método __init__
, como essa variável não existe no contexto de instância, isso resultaria em um erro.
Portanto, é necessário especificar Restaurante.restaurantes
para garantir que você está se referindo à lista de classe que armazena todos os objetos Restaurante
criados.
Espero ter ajudado!
Um forte abraço e bons estudos!