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

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

我在学习Python的诀窍。当我试图打印类的对象时Foobar使用print()函数,得到如下输出:

<__main__.Foobar instance at 0x7ff2a18c>

有什么方法我可以设置印刷行为(或字符串表示)班级,等级及其对象?例如,当我打电话print()在类对象上,我想以某种格式打印其数据成员。如何在Python中实现这一点?

如果您熟悉C+类,则可以实现上述标准ostream通过添加friend ostream& operator << (ostream&, const Foobar&)方法。


至尊宝的传说
浏览 829回答 3
3回答

撒科打诨

>>>&nbsp;class&nbsp;Test:...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__repr__(self):...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Test()"...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__str__(self):...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;return&nbsp;"member&nbsp;of&nbsp;Test"...&nbsp;>>>&nbsp;t&nbsp;=&nbsp;Test()>>>&nbsp;tTest()>>>&nbsp;print(t)member&nbsp;of&nbsp;Test这个__str__方法是打印它时发生的情况,而__repr__方法是当您使用repr()函数(或者当您使用交互式提示符查看它时)。如果这不是毕多尼方法,我很抱歉,因为我还在学习-但是它有效。如果没有__str__方法时,Python将输出__repr__相反。如果你定义__str__但不是__repr__,Python将使用上面看到的__repr__,但仍然使用__str__印刷用的。

红颜莎娜

正如Chris Lutz提到的,这是由__repr__方法。从.的文件repr():对于许多类型,此函数尝试返回一个字符串,该字符串将在传递给eval()否则,表示形式是一个括在尖括号中的字符串,该字符串包含对象类型的名称以及其他信息(通常包括对象的名称和地址)。类可以通过定义__repr__()方法。给定以下类别测试:class&nbsp;Test: &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self,&nbsp;a,&nbsp;b): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.a&nbsp;=&nbsp;a &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.b&nbsp;=&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__repr__(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"<Test&nbsp;a:%s&nbsp;b:%s>"&nbsp;%&nbsp;(self.a,&nbsp;self.b) &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__str__(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"From&nbsp;str&nbsp;method&nbsp;of&nbsp;Test:&nbsp;a&nbsp;is&nbsp;%s,&nbsp;b&nbsp;is&nbsp;%s"&nbsp;%&nbsp;(self.a,&nbsp;self.b).它在Pythonshell中的作用如下:>>>&nbsp;t&nbsp;=&nbsp;Test(123,&nbsp;456)>>>&nbsp;t<Test&nbsp;a:123&nbsp;b:456>>>>&nbsp;print&nbsp;repr(t)<Test&nbsp;a:123&nbsp;b:456>>>>&nbsp;print(t)From&nbsp;str&nbsp;method&nbsp;of&nbsp;Test:&nbsp;a&nbsp;is&nbsp;123,&nbsp;b&nbsp;is&nbsp;456 >>>&nbsp;print(str(t))From&nbsp;str&nbsp;method&nbsp;of&nbsp;Test:&nbsp;a&nbsp;is&nbsp;123,&nbsp;b&nbsp;is&nbsp;456如果没有__str__方法的定义,print(t)(或print(str(t)))将使用__repr__相反如果没有__repr__方法,然后使用默认值,这与.。def&nbsp;__repr__(self): &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"<%s&nbsp;instance&nbsp;at&nbsp;%s>"&nbsp;%&nbsp;(self.__class__.__name__,&nbsp;id(self))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python