Maison  >  Article  >  développement back-end  >  Comment personnaliser la représentation sous forme de chaîne d'une classe en Python ?

Comment personnaliser la représentation sous forme de chaîne d'une classe en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 04:16:02295parcourir

How to Customize the String Representation of a Class in Python?

Représentation de chaîne personnalisée pour les classes en Python

Considérez la classe suivante :

class foo(object):
    pass

La représentation sous forme de chaîne par défaut de cette classe est :

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

Pour personnaliser la représentation sous forme de chaîne de la classe elle-même (et non les instances de la classe), utilisez le concept de métaclasse. Une métaclasse est une classe qui crée d'autres classes, permettant d'ajuster leur comportement.

Implémentez les méthodes __str__() ou __repr__() au sein de la métaclasse de la classe. La méthode __str__() fournit une représentation sous forme de chaîne lisible, tandis que __repr__() offre une représentation sans ambiguïté.

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

class C(object):
  __metaclass__ = MC

print(C)

Sortie :

Customized class!

Pour Python 3, modifiez le code comme suit :

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

class C(object, metaclass=MC):
    pass


print(C)

Résultat :

Customized class!

En mettant en œuvre le __str__() ou __repr__() dans la métaclasse, vous pouvez définir une représentation sous forme de chaîne personnalisée qui sera affichée lorsque vous imprimerez la classe.

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