Standard pprint
Modul ist schön, wenn es um Listen, dicts und so weiter geht. Aber manchmal völlig unbrauchbar mit benutzerdefinierten Klassen:Python 3.x: alternative pprint-Implementierung
Der einzige Weg, es nutzbare Informationen über ein Objekt einer Klasse drucken zu machen, ist
__repr__
außer Kraft zu setzen, aber was, wenn meine Klasse schon schön hat,eval()
‚in der Lage__repr__
das ist die Informationen nicht zeigen, die ich in print output sehen möchte?Ok, werde ich Druck orientierte
__repr__
schreiben, aber in diesem Fall ist es unmöglich, Pretty-Print etwas in meiner Klasse:
.
class Data:
def __init__(self):
self.d = {...}
Ich kann nicht recht-print self.d
Inhalt, kann ich nur einzeilige Darstellung zurückkehren (zumindest ohne mit stacktraces zu spielen, etc). - Überschreiben PrettyPrinter
ist keine Option, ich möchte es nicht jedes Mal tun, wenn ich die gleiche Klasse hübsch drucken möchte.
Also ... Gibt es Alternativen zu pprint, die es ermöglichen, eine benutzerdefinierte Klasse hübsch druckbar zu machen?
https://pypi.python.org/pypi/pretty/0.1 gefunden, aber es scheint nur py2.X zu sein – Equidamoid
"Ich kann nur eine einzeilige Darstellung zurückgeben" - warum ist das?NumPy gibt zum Beispiel mehrzeilige repr() s zurück, die gut funktionieren. Hier ein Beispiel als Python-String: '" array ([(0, 0, (0, 0, 0)), (0, 0, (0, 0, 0)), (0, 0, (0, 0, 0)), \ n (0, 0, (0, 0, 0))], \ n dtype = [('foo', 'u1'), ('bar', '
kampu
@kampu Ich meine, ich kann mehrzeilige Zeichenfolge nicht zurückgeben, weil es "pprint" Einzug bricht. – Equidamoid