Maison >développement back-end >Tutoriel Python >Définir des objets itérables à l'aide des fonctions __len__() et __getitem__() de Python

Définir des objets itérables à l'aide des fonctions __len__() et __getitem__() de Python

WBOY
WBOYoriginal
2023-08-22 09:34:461058parcourir

Définir des objets itérables à laide des fonctions __len__() et __getitem__() de Python

Utilisez les fonctions __len__() et __getitem__() de Python pour définir des objets itérables

Récemment, alors que j'apprenais Python, j'ai découvert une fonction très intéressante, qui consiste à définir des objets itérables en définissant __len__() et __getitem__() Les fonctions peuvent définir elles-mêmes des objets itérables. Dans cet article, je vais vous présenter comment utiliser ces deux fonctions pour définir un objet itérable et donner des exemples de code correspondants.

En Python, la fonction __len__() est utilisée pour renvoyer la longueur de l'objet, qui est le nombre d'éléments. Cette fonction doit renvoyer un entier. Si nous définissons nous-mêmes un objet et que nous voulons pouvoir utiliser une fonction comme len() pour obtenir la longueur de l'objet, alors nous pouvons définir la fonction __len__() dans l'objet.

Voici un exemple qui montre comment définir un objet itérable et y définir la fonction __len__() :

class MyList:
  def __init__(self):
    self.data = []
  
  def __len__(self):
    return len(self.data)

Dans cet exemple, nous définissons une classe MyList et définissons __len__() dans sa fonction. Cette fonction renvoie la longueur de self.data, qui correspond au nombre d'éléments dans notre objet personnalisé.

En plus de la fonction __len__(), nous pouvons également utiliser la fonction __getitem__() pour obtenir des éléments dans l'objet. Cette fonction prend un index en paramètre et renvoie l'élément correspondant. En définissant la fonction __getitem__(), nous pouvons obtenir les éléments de l'objet personnalisé par index, tout comme en utilisant une liste ou un tuple.

Voici un exemple qui montre comment définir la fonction __getitem__() dans un objet itérable :

class MyList:
  def __init__(self):
    self.data = []

  def __len__(self):
    return len(self.data)
  
  def __getitem__(self, index):
    return self.data[index]

Dans cet exemple, nous avons défini la fonction __getitem__() dans la classe MyList. Cette fonction accepte un index en paramètre et renvoie l'élément de l'index correspondant dans self.data.

En définissant les deux fonctions __len__() et __getitem__(), nous pouvons utiliser nos propres objets itérables définis, tout comme utiliser des listes. Voici un exemple qui montre comment utiliser notre objet itérable personnalisé :

mylist = MyList()
mylist.data = [1, 2, 3, 4, 5]

print(len(mylist))    # 输出:5

print(mylist[0])      # 输出:1
print(mylist[3])      # 输出:4

Dans cet exemple, nous créons d'abord un objet MyList, puis attribuons une valeur à l'attribut data de l'objet. Ensuite, nous utilisons la fonction len() pour obtenir la longueur de l'objet et obtenir les éléments de l'objet par index.

A travers les exemples de code ci-dessus, nous pouvons voir qu'en définissant les fonctions __len__() et __getitem__(), nous pouvons définir nous-mêmes des objets itérables et utiliser cet objet comme une liste. Cette fonctionnalité est très puissante et peut apporter une plus grande flexibilité et évolutivité à nos programmes.

Pour résumer, les fonctions __len__() et __getitem__() en Python peuvent nous aider à définir des objets itérables, nous permettant d'utiliser des objets personnalisés comme des listes. Dans la programmation réelle, nous pouvons définir ces deux fonctions en fonction de nos propres besoins pour obtenir des fonctions plus flexibles et plus pratiques. J'espère que cet article pourra vous être utile !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn