Heim > Artikel > Backend-Entwicklung > Wie kann ich die String-Darstellung von Python-Klassen mithilfe von Metaklassen anpassen?
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
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!