当我创建像这样的类
时class Node(object):
def __init__(self):
pass
node = Node()
print node
打印<__main__.Task object at 0x7fc9be21cd0>
。
但是,我正在使用一个库,并希望打印一个对象,产生以下内容:
foo.node(path="/test/1/2", value='Text')
这是如何构建的?值似乎不是成员变量或任何可访问的?我期待像<__main__.foo object at ...
答案 0 :(得分:1)
由__repr__()
方法生成。和所有其他常规方法一样,它运行的实例作为第一个参数传递。
答案 1 :(得分:0)
正如我期待一个更加解释性的答案,我在书中找到了答案#14; Fluent Python&#34;基本上,该库的作者实现了__repr__
class Node:
def __init__(self, path=0, value=0):
self.path = path
self.value = value
def __repr__(self):
return "foo.node(path="{0}", value='{1}')".format(self.path, self.value)
内置的repr调用 repr 特殊方法来获取字符串表示 检查对象。如果我们没有实现 repr ,那么矢量实例会 在控制台中显示
<Vector object at 0x10e100070>