我正在学习Python中的绳索。 当我尝试使用print()
函数print()
Foobar
类的对象时,得到如下输出:
<__main__.Foobar instance at 0x7ff2a18c>
有没有办法设置类及其对象的打印行为 (或字符串表示形式 )? 例如,当我在类对象上调用print()
时,我想以某种格式打印其数据成员。 如何在Python中实现?
如果您熟悉C ++类,则可以通过为该类添加friend ostream& operator << (ostream&, const Foobar&)
方法来实现上述标准ostream
。
#1楼
只需在@dbr的答案中加上我的两分钱,以下是他引用的官方文档中如何实现这句话的一个示例:
“ [...返回一个字符串,当传递给eval()时,该字符串将产生具有相同值的对象,[...]”
给定此类定义:
class Test(object):
def __init__(self, a, b):
self._a = a
self._b = b
def __str__(self):
return "An instance of class Test with state: a=%s b=%s" % (self._a, self._b)
def __repr__(self):
return 'Test("%s","%s")' % (self._a, self._b)
现在,很容易序列化Test
类的实例:
x = Test('hello', 'world')
print 'Human readable: ', str(x)
print 'Object representation: ', repr(x)
print
y = eval(repr(x))
print 'Human readable: ', str(y)
print 'Object representation: ', repr(