Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die String-Darstellung von Python-Klassen mithilfe von Metaklassen anpassen?

Wie kann ich die String-Darstellung von Python-Klassen mithilfe von Metaklassen anpassen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-06 14:58:03855Durchsuche

How can I customize the string representation of Python classes using metaclasses?

Benutzerdefinierte String-Darstellung für Klassen: Ein pythonischer Ansatz

In Python kann die Definition Ihrer eigenen String-Darstellung für Klassen eine bessere Kontrolle darüber bieten, wie die Klasse wird vorgestellt. Im Gegensatz zur Standarddarstellung, die ähnelt, möchten Sie möglicherweise eine informativere oder optisch ansprechendere Anzeige erstellen. In diesem Artikel wird untersucht, wie Sie die Zeichenfolgendarstellung von Klassen mithilfe von Metaklassen anpassen.

Betrachten Sie die folgende Klasse:

class foo(object):
    pass

Standardmäßig ergibt die Konvertierung von foo in eine Zeichenfolge Folgendes:

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

Um diese Darstellung anzupassen, können Sie entweder __str__() oder __repr__() innerhalb der Metaklasse der Klasse implementieren. Diese magischen Methoden sind dafür verantwortlich, die lesbaren bzw. eindeutigen Zeichenfolgendarstellungen der Klasse zurückzugeben.

Das folgende Beispiel zeigt, wie ein benutzerdefiniertes __repr__() in einer Metaklasse implementiert wird:

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

class C(object):
    __metaclass__ = MC


print(C)

Dieser Code gibt „Wahaha!“ aus. wenn Sie die Klasse C drucken.

Wenn Sie eine lesbare Stringifizierung wünschen, verwenden Sie __str__; Für eindeutige Darstellungen verwenden Sie __repr__. Für Python 3 müssen Sie die Metaklasse in der Klassendefinition selbst angeben, etwa so:

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

class C(object, metaclass=MC):
    pass


print(C)

Das obige ist der detaillierte Inhalt vonWie kann ich die String-Darstellung von Python-Klassen mithilfe von Metaklassen anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Unflatten in PyTorchNächster Artikel:Unflatten in PyTorch