打印python对象不会产生预期的< __ main __。myclass ...>产量

时间:2017-10-28 00:41:47

标签: python

当我创建像这样的类

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 ...

这样的东西

2 个答案:

答案 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>