Data Model
Quand dans un script Python on fait my_object[i]
c'est que l'objet my_object
est une instance d'une classe qui a une méthode spéciale __getitem__(self)
. Un exemple ci dessous.
Sans la méthode spéciale
class Building:
def __init__(self, n_flats):
self.__flats = [i for i in range(n_flats)]
building = Building(10)
building[4]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [1], in <module>
3 self.__flats = [i for i in range(n_flats)]
5 building = Building(10)
----> 7 building[4]
TypeError: 'Building' object is not subscriptable
Avec
class Building:
def __init__(self, n_flats):
self.__flats = [i for i in range(n_flats)]
def __getitem__(self, i):
return f"You have selected the building #{self.__flats[i]}"
building = Building(10)
building[4]
'You have selected the building #4'
L'utilisation de '[i]'
est un raccourcis de my_object.__getitem__()
. Une liste par exemple est une instance de classe qui a cette méthode implémentée
Source
Fluent Python - Luciano Ramalho
Top comments (0)