为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用print()打印类对象?

如何使用print()打印类对象?

至尊宝的传说 2019-06-18 14:49:11
如何使用print()打印类对象?我在学习Python的诀窍。当我试图打印类的对象时Foobar使用print()函数,得到如下输出:<__main__.Foobar instance at 0x7ff2a18c>有什么方法我可以设置印刷行为(或字符串表示)班级,等级及其对象?例如,当我打电话print()在类对象上,我想以某种格式打印其数据成员。如何在Python中实现这一点?如果您熟悉C+类,则可以实现上述标准ostream通过添加friend ostream& operator << (ostream&, const Foobar&)方法。
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

>>> class Test:...     def __repr__(self):...         return "Test()"...     def __str__(self):...       
  return "member of Test"... >>> t = Test()>>> tTest()>>> print(t)member of Test

这个__str__方法是打印它时发生的情况,而__repr__方法是当您使用repr()函数(或者当您使用交互式提示符查看它时)。如果这不是毕多尼方法,我很抱歉,因为我还在学习-但是它有效。

如果没有__str__方法时,Python将输出__repr__相反。如果你定义__str__但不是__repr__,Python将使用上面看到的__repr__,但仍然使用__str__印刷用的。


查看完整回答
反对 回复 2019-06-18
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

正如Chris Lutz提到的,这是由__repr__方法。

从.的文件repr():

对于许多类型,此函数尝试返回一个字符串,该字符串将在传递给eval()否则,表示形式是一个括在尖括号中的字符串,该字符串包含对象类型的名称以及其他信息(通常包括对象的名称和地址)。类可以通过定义__repr__()方法。

给定以下类别测试:

class Test:
    def __init__(self, a, b):
        self.a = a
        self.b = b    def __repr__(self):
        return "<Test a:%s b:%s>" % (self.a, self.b)

    def __str__(self):
        return "From str method of Test: a is %s, b is %s" % (self.a, self.b)

.它在Pythonshell中的作用如下:

>>> t = Test(123, 456)>>> t<Test a:123 b:456>>>> print repr(t)<Test a:123 b:456>>>> print(t)From str method of Test: a is 123, b is 456
>>> print(str(t))From str method of Test: a is 123, b is 456

如果没有__str__方法的定义,print(t)(或print(str(t)))将使用__repr__相反

如果没有__repr__方法,然后使用默认值,这与.。

def __repr__(self):
    return "<%s instance at %s>" % (self.__class__.__name__, id(self))




查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 826 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信