Les méthodes spéciales intégrées à Python sont utilisées pour améliorer les fonctionnalités de vos classes. On les identifie par un double trait de soulignement au début et à la fin. La méthode spéciale que vous connaissez déjà est sans doute la méthode __init__(). Elle est responsable de la construction des objets et est toujours appelée lors de l'instanciation d'un objet. En fait, Python permet de surcharger les opérateurs, ce qui permet d'étendre les fonctionnalités de votre code. En tant que programmeurs Python, vous n'êtes pas censés appeler directement les méthodes spéciales. Au lieu de cela, vous êtes censés utiliser les opérations de haut niveau (comme les opérateurs + et ==) qui reposent sur ces méthodes spéciales. Les classes peuvent surcharger la plupart des opérations de type intégrées. Cela inclut les expressions, mais aussi les opérations de base comme l'affichage et la création d'objets. Les classes peuvent intercepter les opérateurs Python Le langage Python définit un mappage de certaines opérations vers une méthode spéciale dans une classe.
Il y a de nombreuses autres méthodes spéciales. Un ensemble de ces méthodes permet aux classes de se comporter comme des nombres, permettant l'addition, la soustraction et autres opérations arithmétiques sur des instances de classe (l'exemple type en est une classe représentant les nombres complexes, nombres ayant à la fois un composant réel et imaginaire). La méthode __call__ permet à une classe de se comporter comme une fonction, ce qui permet d'appeler une instance de classe directement. Il y a aussi d'autres méthodes spéciales permettant aux classes d'avoir des données attributs en lecture seule ou en écriture seule, nous en parlerons dans des chapitres à venir.
5. 7. Méthodes spéciales avancées Il y a d'autres méthodes spéciales que __getitem__ et __setitem__. Certaines vous laissent émuler des fonctionnalité dont vous ignorez encore peut-être tout. Cet exemple montre certaines des autres méthodes spéciales de UserDict. Exemple 5. 16. D'autres méthodes spéciales dans UserDict def __repr__ (self): return repr() def __cmp__ (self, dict): if isinstance(dict, UserDict): return cmp(, ) else: return cmp(, dict) def __len__ (self): return len() def __delitem__ (self, key): del [key] __repr__ est une méthode spéciale qui est appelée lorsque vous appelez repr( instance). La fonction repr est une fonction prédéfinie qui retourne une représentation en chaîne d'un objet. Elle fonctionne pour tout objet, pas seulement les instances de classes. En fait, vous êtes déjà familier de repr, même si vous l'ignorez. Dans la fenêtre interactive, lorsque vous tapez juste un nom de variable et faites Entrée, Python utilise repr pour afficher la valeur de la variable.
Vous trouvez peut-être que ça fait beaucoup de travail pour faire avec une classe ce qu'on peut faire avec un type de données prédéfini. Et c'est vrai que tout serait plus simple (et la classe UserDict serait inutile) si on pouvait hériter d'un type de données prédéfini comme un dictionnaire. Mais même si vous pouviez le faire, les méthodes spéciales seraient toujours utiles, car elles peuvent être utilisées dans n'importe quelle classe, pas seulement dans une classe enveloppe comme UserDict. Les méthodes spéciales permettent à toute classe de stocker des paires clé-valeur comme un dictionnaire, simplement en définissant la méthode __setitem__. Toute classe peut se comporter comme une séquence, simplement en définissant la méthode __getitem__. Toute classe qui définit la méthode __cmp__ peut être comparée avec ==. Et si votre classe représente quelque chose qui a une longeur, ne créez pas une méthode GetLength, définissez la méthode __len__ et utilisez len( instance). Alors que les autres langages orientés objet ne vous laissent définir que le modèle physique d'un objet (« cet objet a une méthode GetLength »), les méthodes spéciales de Python comme __len__ vous permettent de définir le modèle logique d'un objet (« cet objet a une longueur »).
Enfin, la méthode pop() supprime l'élément du dictionnaire lié à la clef spécifiée.
Pokemon Gold Rom Ds, 2024