Maison > développement back-end > Tutoriel Python > Comment puis-je personnaliser la représentation sous forme de chaîne des classes Python à l'aide de métaclasses ?

Comment puis-je personnaliser la représentation sous forme de chaîne des classes Python à l'aide de métaclasses ?

Barbara Streisand
Libérer: 2024-11-06 14:58:03
original
964 Les gens l'ont consulté

How can I customize the string representation of Python classes using metaclasses?

Représentation de chaîne personnalisée pour les classes : une approche pythonique

En Python, définir votre propre représentation de chaîne pour les classes peut offrir un meilleur contrôle sur la façon dont la classe est présentée. Contrairement à la représentation par défaut qui ressemble à la , vous souhaiterez peut-être créer un affichage plus informatif ou visuellement attrayant. Cet article explique comment personnaliser la représentation sous forme de chaîne des classes à l'aide de métaclasses.

Considérez la classe suivante :

class foo(object):
    pass
Copier après la connexion

Par défaut, la conversion de foo en chaîne donne :

>>> str(foo)
"<class '__main__.foo'>"
Copier après la connexion

Pour personnaliser cette représentation, vous pouvez implémenter soit __str__() ou __repr__() dans la métaclasse de la classe. Ces méthodes magiques sont chargées de renvoyer respectivement les représentations sous forme de chaîne lisibles et sans ambiguïté de la classe.

L'exemple suivant montre comment implémenter un __repr__() personnalisé dans une métaclasse :

class MC(type):
    def __repr__(self):
        return 'Wahaha!'

class C(object):
    __metaclass__ = MC


print(C)
Copier après la connexion

Ce code affichera "Wahaha!" lorsque vous imprimez la classe C.

Si vous désirez une stringification lisible, utilisez __str__; pour des représentations sans ambiguïté, utilisez __repr__. Python 3 vous oblige à spécifier la métaclasse dans la définition de classe elle-même, comme ceci :

class MC(type):
    def __repr__(self):
        return 'Wahaha!'

class C(object, metaclass=MC):
    pass


print(C)
Copier après la connexion

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