2
respostas

Alternativas B e C. Dúvidas...

Vi que outra pessoa teve a mesma dúvida que eu. Mesmo vendo a resposta, meu cérebro de fusquinha ainda está pegando no tranco e não entendi, rsrs. Pois é, se eu não me confundi ou não enxerguei a 'pegadinha', caso a B esteja correta quanto ao horário, a C está correta quanto à banda. Não? Na B, trocou-se apenas

def get_horario(self):
        return self.__horario

por

def __obter_horario(self):
        return self.__horario

Já na opção C, trocou-se apenas

def get_banda(self):
        return self.__banda

por

def __obter_banda(self):
        return self.__banda

Então, se a B está sendo considerada correta, a C também não deveria estar? Outra coisa, o enunciado da questão B me pareceu confuso ao dizer: "Substituir os métodos get_horario e set_horario" e ao mesmo tempo "Manter o método set_horario para atualizar o valor do atributo." Afinal, substitui ou mantêm? Como meu cérebro bugou, pedi socorro à Luri, que bugou junto, kkkk:

LURI: "Peço desculpas pelo equívoco na minha resposta anterior. Você está correto, a letra B substitui apenas o método get_horario por um método privado __obter_horario que retorna o valor do atributo __horario, mantendo o método set_horario inalterado.

A resposta correta para o exercício seria a letra A, que propõe criar métodos privados para cada atributo, utilizando o prefixo "__" antes dos nomes dos métodos. Esses métodos seriam responsáveis por retornar os valores dos atributos e atualizá-los.

Mais uma vez, peço desculpas pelo equívoco e agradeço por apontar o erro."

E aí, meus amigos? Estou sem saber.

2 respostas

Ola!

Na opção C, a ideia é substituir o método get_banda por __obter_banda, mas não há menção ao método set_banda, o que torna a opção C ainda mais confusa em termos de encapsulamento.

Acredito que resposta sugerida pela Luri, a letra A, é a mais apropriada, pois propõe criar métodos privados para cada atributo, utilizando o prefixo __ antes dos nomes dos métodos. Esses métodos seriam responsáveis por retornar os valores dos atributos e atualizá-los. Isso segue as melhores práticas de encapsulamento em Python, garantindo que o acesso e a atualização dos atributos sejam feitos por métodos apropriados, em vez de expor os atributos diretamente.

Obrigado pela resposta. No meu entender, a letra C está para 'banda' assim como a letra B está para 'horário', só que trocaram a ordem das demais funções, dando a falsa impressão de que mais coisa foi mudada (pelo menos é o que eu consegui ver até o momento) - mas o resto é igual. A única diferença é o "obter_horario" da B frente ao "obter_banda" da C. Então se uma estivesse porventura certa, a outra também deveria estar... estou viajando? Quando a C não encapsula o set_banda, para mim não fica pior que a B, não. A letra B não encapsula o set_horario. As duas estão 'mancando", cada uma de uma perna, rsrs.

Se eu, você e a Luri estivermos certos, a resposta correta é somente a A. Só que o exercício dá a "B" como correta também, vc viu? Caso a B realmente esteja certa, eu gostaria de saber para aprender.