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
Barbara Streisandoriginal
2024-11-06 14:58:03935parcourir

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

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

>>> str(foo)
"<class '__main__.foo'>"

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)

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)

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
Article précédent:Déaplatir dans PyTorchArticle suivant:Déaplatir dans PyTorch