1
resposta

[Dúvida] Não entendi o exercício e a resposta correta

O exercício proposto diz que a resposta correta é essa, letra D:

class Menu:
    catalogo = {}

    def adicionar_item(self, item, ingredientes):
        self.catalogo[item] = ingredientes

    @staticmethod
    def ingredientes(item):
        return Menu.catalogo[item]

Porém minha pergunta é: Como utiliza uma classe dessa forma? Testei no Pycharm e não deu certo sem a init entre outras coisas faltantes, veja o exemplo de como testei e o erro, como vou criar algum objeto ou passar os valores para usar essa classe dessa forma?

class Menu:
    catalogo = {"BB": 123}

    def adicionar_item(self, item, ingredientes):
        self.catalogo[item] = ingredientes

    @staticmethod
    def ingredientes(item):
        return Menu.catalogo[item]


from menu import Menu

a = Menu("BB", "ITENS_TESTAR_AJUSTE")
a.ingredientes("BB")

Erro:

Traceback (most recent call last):
  File "C:\Users\XXXXXXX\PycharmProjects\AluraPython\menu.py", line 12, in <module>
    from menu import Menu
  File "C:\Users\XXXXXXXX\PycharmProjects\AluraPython\menu.py", line 14, in <module>
    a = Menu("BB", "ITENS")
TypeError: Menu() takes no arguments
1 resposta

Tenta assim:

class Menu:
    catalogo = {"BB": "123"}

    def adicionar_item(self, item, ingredientes):
        self.catalogo[item] = ingredientes

    @staticmethod
    def ingredientes(item):
        return Menu.catalogo[item]
        

print("Capturando valor por método estático: " + Menu.ingredientes("BB"))

objeto = Menu()
objeto.adicionar_item("BB2", "Teste")

print("Capturando valor através do objeto: " + objeto.ingredientes("BB"))
print("Capturando valor por método estático: " + Menu.ingredientes("BB2"))