"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-11
Parcourir:176

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é de 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!'
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3