"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo personalizar la representación de cadenas de una clase en Python?

¿Cómo puedo personalizar la representación de cadenas de una clase en Python?

Publicado el 2024-11-11
Navegar:280

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

Personalizar la representación de cadenas de clases

En Python, las clases son objetos y, por lo tanto, tienen su propia representación de cadenas. De forma predeterminada, esta representación es . Diseñar una representación personalizada para clases puede resultar útil para depurar, registrar y otros fines.

Para lograr esta personalización, se emplea una metaclase. En Python, una metaclase es una clase que crea otras clases. Al implementar el método __str__ o __repr__ en una metaclase, se puede personalizar la representación de cadena de la clase.

El método __str__ proporciona una representación de cadena legible por el usuario, mientras que __repr__ proporciona una representación inequívoca para el desarrollo y la depuración. Aquí hay un ejemplo usando __repr__:

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

class C(object):
  __metaclass__ = MC

print(C)  # Prints 'Wahaha!'

En Python 3, el atributo __metaclass__ se reemplaza con un argumento de palabra clave metaclass. Aquí está la versión Python 3 del ejemplo:

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

class C(object, metaclass=MC):
    pass

print(C)  # Prints 'Wahaha!'
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3