Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida - parâmetro "item" do "__getitem__(self, item)"

Bom dia.

Não entendi muito bem como funciona essa parâmetro "item" do "getitem". Reparei que em nenhuma parte do código ele é passado, então quem passa esse parâmetro pro "getitem"? O quem tem nesse parâmetro? Ele é um parâmetro tipo o "self" e então é por isso que eu não preciso passar pro método "getitem"?

1 resposta
solução!

Olá Tiago.

Como podemos verificar na documentação, o parâmetro item é o key, e ele é o valor que passamos entre os colchetes [ ].

Por exemplo em um List normal:


>> lista = [10, 15, 30]
>> key = 1
>> print(lista[key])
 15

Da mesma maneira quando implementamos o dunder method, __getitem__(), em uma classe vamos ter o mesmo efeito:


class ListaDeCompras:
    def __init__(self, nome):
        self.__nome = nome
        self.__lista = []

    def add_item(self, produto):
        self.__lista.append(produto)

    def __getitem__(self, item):
        return self.__lista[item]

Nessa classe determinei que quando utilizarmos o operador [ ], vamos retornar um item da lista self__lista:


>> lista_de_compras = ListaDeCompras("Compras do mes")
>> lista_de_compras.add_item("Miojo")
>> lista_de_compras.add_item("Refrigerante")
>> key = 1
>> lista_de_compras[key]
"Refrigerante"

Nesse exemplo passo pelo operador que quero o segundo valor da lista lista_de_compras[key] e assim a classe vai receber por "parâmetro" na "função" get_item o valor da key getitem(self, 1):.

Espero ter ajudado a entender melhor, mas qualquer duvida não hesite em perguntar.

Bons Estudos.