我正在学习 Python 的诀窍。当我尝试 Foobar 使用该 print() 函数打印类对象时,我得到如下输出:
Foobar
print()
<__main__.Foobar instance at 0x7ff2a18c>
有没有办法可以设置 类 及其 对象的 打印行为 (或 字符串表示形式 )?例如,当我调用一个类对象时,我想以某种格式打印它的数据成员。如何在 Python 中实现这一点? print()
如果您熟悉 C++ 类,则可以通过为该类 ostream 添加方法来实现上述标准。 friend ostream& operator << (ostream&, const Foobar&)
ostream
friend ostream& operator << (ostream&, const Foobar&)
>>> class Test: ... def __repr__(self): ... return "Test()" ... def __str__(self): ... return "member of Test" ... >>> t = Test() >>> t Test() >>> print(t) member of Test
该__str__方法是在您打印它时发生的调用,该__repr__方法是在您使用该repr()函数时发生的(或者当您使用交互式提示查看它时)。
__str__
__repr__
repr()
如果没有__str__给出方法,Python 将打印结果__repr__。如果您定义__str__但未定义__repr__,Python 将使用您在上面看到的作为__repr__,但仍__str__用于打印。