Powiedz, że chcę debugować prostą klasę z atrybutem myattribute
. Tworzę metodę repr
tak:Jak mogę użyć `str.format` bezpośrednio jako` __repr__`?
class SimpleClass:
def __repr__(self):
return "{0.myattribute}".format(self)
Czuje się nieco zbędny, więc wolałbym użyć format
bezpośrednio:
class SimpleClass:
__repr__ = "{0.myattribute}".format
... ale to nie z IndexError: tuple index out of range
. Rozumiem, że format
nie może uzyskać dostępu do argumentu self
, ale nie widzę powodu.
Czy robię coś złego, czy jest to ograniczenie CPython – lub co jeszcze?
Można to zrobić "__repr__ = lambda self:" {0.myattribute} ".format (self)' ale myślę, że jest gorszy niż 'def' –
uwaga: nie rób tego. –
Moje wyjaśnienie rączki ręki polega na tym, że prawdopodobnie ma to związek z różnicą między metodami związanymi i niezwiązanymi. – NPE