Mmmmmmmmmmmmmmmmmmmmhhhh me quedó un mal sabor de boca de esta clase, no sé si lo explicará en alguna clase posterior o no, pero en realidad los métodos que escribimos con doble guion bajo, son precisamente para poder utilizar cosas como:
menu[1]
len(menu)
print(menu)
Por ejemplo, si no tuviéramos el método __getitem__
en nuestra clase, no deberíamos de ser capaces de hacer print(menu[2])
, pero siento que el profe lo está haciendo ver como que son dos cosas distintas, como si Python por default tuviera este comportamiento: len(menu)
y es diferente a cuando nosotros hacemos menu.__len__()
, PERO PARECE SER QUE NO LO ES! No son diferentes, siento que es syntactic sugar, solamente para built in methods en clases en Python.
Por ejemplo, miren, escriban el siguiente método:
def __len__(self):
print('hola')
return 7
y manden a llamar len(menu)
y van a ver que imprime ‘hola’ y siempre regresa ese valor 7, no importa de qué tamaño sea el array…
Tonses pues ya, eso era lo que quería decir, muchas tardes, buenas gracias.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?