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

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

DDD
DDDoriginal
2024-11-09 15:10:02402parcourir

How Can I Customize the String Representation of a Class in Python?

Personnalisation de la représentation sous forme de chaîne de classe

En Python, les classes sont des objets et ont donc leur propre représentation sous forme de chaîne. Par défaut, cette représentation est . La conception d'une représentation personnalisée pour les classes peut être utile pour le débogage, la journalisation ou à d'autres fins.

Pour réaliser cette personnalisation, une métaclasse est utilisée. En Python, une métaclasse est une classe qui crée d'autres classes. En implémentant la méthode __str__ ou __repr__ dans une métaclasse, la représentation sous forme de chaîne de la classe peut être personnalisée.

La méthode __str__ fournit une représentation sous forme de chaîne lisible par l'utilisateur, tandis que __repr__ fournit une représentation sans ambiguïté pour le développement et le débogage. Voici un exemple utilisant __repr__ :

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

class C(object):
  __metaclass__ = MC

print(C)  # Prints 'Wahaha!'

Dans Python 3, l'attribut __metaclass__ est remplacé par un argument de mot-clé métaclasse. Voici la version Python 3 de l'exemple :

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

class C(object, metaclass=MC):
    pass

print(C)  # Prints 'Wahaha!'

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