Standardowy moduł pprint
jest miły, gdy zajmuje się listami, dyktami i tak dalej. Ale czasami zupełnie bezużyteczne z niestandardowych klasach:Python 3.x: alternatywna implementacja pprint
Jedynym sposobem, aby go wydrukować użyteczną informację o obiekcie pewnej klasie jest przesłonić
__repr__
, ale co jeśli moja klasa już ładne,eval()
„stanie__repr__
który jest nie wyświetlając informacji, które chcę zobaczyć w pprint ouput?Ok, będę pisać do druku zorientowanych
__repr__
, ale w tym przypadku niemożliwe jest całkiem-print coś wewnątrz mojej klasy:
.
class Data:
def __init__(self):
self.d = {...}
nie mogę całkiem-print self.d
zawartość, mogę powrócić reprezentacji tylko jedna linia (przynajmniej bez gry z stacktraces, etc). - Przesłanianie PrettyPrinter
nie jest opcją, nie chcę tego robić za każdym razem, gdy chcę wydrukować dokładnie tę samą klasę.
Więc ... Czy są jakieś alternatywy dla pprint, które pozwalają na tworzenie niestandardowych klas, które można wydrukować?
Znaleziony https://pypi.python.org/pypi/pretty/0.1, ale wydaje się być tylko py2.X. – Equidamoid
"Mogę zwrócić tylko jedną reprezentację" - dlaczego tak jest?NumPy na przykład zwraca wieloliniowe repr(), które działają dobrze. Oto przykład, jako ciąg w języku Python: '" 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 Chodzi mi o to, że nie mogę zwrócić ciągu wielowierszowego, ponieważ złamie on wcięcie 'pprint'. – Equidamoid