Maison > développement back-end > Tutoriel Python > Comment pouvez-vous étendre les types intégrés de Python avec des méthodes personnalisées ?

Comment pouvez-vous étendre les types intégrés de Python avec des méthodes personnalisées ?

Barbara Streisand
Libérer: 2024-10-24 19:27:02
original
1077 Les gens l'ont consulté

How Can You Extend Python's Built-in Types with Custom Methods?

Extension des types Python intégrés avec des méthodes personnalisées

En Python, les types intégrés tels que dict et str sont immuables et ne Je n'autorise pas les ajouts de méthodes directs. Cependant, il est possible d'obtenir des fonctionnalités similaires en sous-classant le type intégré et en le remplaçant dans l'espace de noms global.

Par exemple, supposons que vous souhaitiez ajouter une méthode helloWorld() au type dict. Bien que cela ne soit pas réalisable avec une modification directe, vous pouvez sous-classer dict et définir la méthode dans la sous-classe :

class MyDict(dict):
    def helloWorld(self):
        print("Hello world!")
Copier après la connexion

Pour appliquer cette sous-classe à tous les futurs dictionnaires, remplacez le type dict d'origine dans l'espace de noms intégré. :

import __builtin__
__builtin__.dict = MyDict
Copier après la connexion

Maintenant, tout dictionnaire créé sera du type MyDict et aura la méthode helloWorld() :

my_dict = {}
my_dict.helloWorld()  # Prints "Hello world!"
Copier après la connexion

Cependant, notez que les objets créés via une syntaxe littérale (par exemple, {}) sera toujours du type Vanilla dict et n'aura pas la méthode personnalisée :

vanilla_dict = {}
vanilla_dict.helloWorld()  # AttributeError: 'dict' object has no attribute 'helloWorld'
Copier après la connexion

Cette approche fournit un moyen d'étendre les types intégrés avec des méthodes personnalisées, mais ce n'est pas sans limites . Par exemple, les objets de syntaxe littérale restent vanille et les sous-classes n'héritent d'aucun attribut ou méthode personnalisé ajouté au type parent.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal