当我创建这样一个类时
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 ...
这样的东西
发布于 2017-11-16 10:19:33
当我期待一个更有解释性的答案时,我在书"Fluent Python“中找到了答案--基本上这个库的作者实现了__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>
。
发布于 2017-10-27 16:49:51
它是由__repr__()
方法生成的。和所有其他普通方法一样,它正在运行的实例作为第一个参数传递。
https://stackoverflow.com/questions/46985177
复制相似问题