为一个带有成员变量x
和y
的类Foo
实现__repr__
方法,是否有一种自动填充字符串的方法?以下是一个不起作用的示例:
class Foo(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return "Foo({})".format(**self.__dict__)
>>> foo = Foo(42, 66)
>>> print(foo)
IndexError: tuple index out of range
还有一个:
from pprint import pprint
class Foo(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return "Foo({})".format(pprint(self.__dict__))
>>> foo = Foo(42, 66)
>>> print(foo)
{'x': 42, 'y': 66}
Foo(None)
是的,我可以将这个方法定义为
def __repr__(self):
return "Foo({x={}, y={}})".format(self.x, self.x)
但是当成员变量很多时,这会变得很繁琐。
object.__repr__
实现? - Géry Ogamtype(self).__name__
而不是self.__class__.__name__
。 - Géry Ogam@
符号后面的数字做出假设,而我认为缩短输出并不值得因缩写ID而引起的混乱。 - user2357112