我有以下python类:
class uf_node:
def __init__(self, Vertex):
self.vertex = Vertex
self.rep = Vertex
def set_rep(self, Rep):
self.rep = Rep
现在,在翻译处,我会做以下事情:
>>> from uf_node import *
>>> u = uf_node('a')
>>> u
<uf_node.uf_node instance at 0x7f56069ca758>
可以获得更好的输出,也许创建类似'toString()'函数的东西,当你尝试打印对象时会自动调用它吗?
答案 0 :(得分:1)
REPL调用您班级的__repr__
功能。因此,您可以覆盖__str__
和__repr__
这样的功能
class uf_node:
def __init__(self, Vertex):
self.vertex = Vertex
self.rep = Vertex
def set_rep(self, Rep):
self.rep = Rep
def __str__(self):
return "Rep: {}, Vertex: {}".format(self.rep, self.vertex)
def __repr__(self):
return "Rep: {}, Vertex: {}".format(self.rep, self.vertex)
有了这个改变,
>>> u = uf_node('a')
>>> u
Rep: a, Vertex: a
>>>
注意:您可以在此excellent answer
中详细了解__str__
与__repr__
之间的差异
答案 1 :(得分:0)
您可以覆盖 str 或 repr 类方法。
__str__
处理转换为字符串,而__repr__
是您可以使用的字符串表示形式,如果您想要再次实例化它。 __repr__
应该返回一个有效的Python表达式。两种方法都返回一个字符串您通常使用字符串构造函数str()
(str类将调用__str__
方法)或repr()
函数调用这些方法。
class uf_node(object):
def __init__(self, Vertex):
self.vertex = Vertex
self.rep = Vertex
def set_rep(self, Rep):
self.rep = Rep
def __str__(self):
'''Used for string conversion'''
return 'This node uses vertex %s' % self.vertex
def __repr__(self):
'''Used for string representation'''
return 'uf_node(%s)' % repr(self.vertex)
v = uf_node('a')
print str(v) # -> 'This node used vertex a'
print repr(v) # -> "uf_node('a')
请在此处查看文档,并对其进行了详细解释:https://docs.python.org/2/reference/datamodel.html