当我尝试访问类的实例时,我得到如下输出:print
>>> class Test():
... def __init__(self):
... self.a = 'foo'
...
>>> print(Test())
<__main__.Test object at 0x7fc9a9e36d60>
如何使它显示自定义内容(例如,包含属性值的内容)?也就是说,如何定义类的实例在打印时的外观(它们的字符串表示形式)?print
a
请参阅如何为类本身(而不是类的实例)选择自定义字符串表示形式?如果你想定义类本身的行为(在这种情况下,print(Test)
显示一些自定义的东西,而不是<类__main__。测试>
或类似)。(事实上,该技术本质上是相同的,但应用起来更棘手。
>>> 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()
如果没有给出方法,Python 将打印结果。如果你定义但不是,Python 将使用你在上面看到的作为 ,但仍用于打印。__str__
__repr__
__str__
__repr__
__repr__
__str__
正如 Chris Lutz 所解释的那样,这是由类中的方法定义的。__repr__
来自 的文档:repr()
对于许多类型,此函数尝试返回一个字符串,该字符串在传递给 时将生成具有相同值的对象,否则表示形式是括在尖括号中的字符串,其中包含对象类型的名称以及通常包括对象的名称和地址的其他信息。类可以通过定义方法来控制此函数为其实例返回的内容。
eval()
__repr__()
给定以下类测试:
class Test:
def __init__(self, a, b):
self.a = a
self.b = b
def __repr__(self):
return f"<Test a:{self.a} b:{self.b}>"
def __str__(self):
return f"From str method of Test: a is {self.a}, b is {self.b}"
..它将在 Python shell 中按以下方式操作:
>>> 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):
cls = self.__class__
return f"<{cls.__module_}.{cls.__qualname__} object at {id(self)}>"
如果您遇到@Keith的情况,您可以尝试:
print(a.__dict__)
它违背了我认为的良好风格,但如果您只是尝试调试,那么它应该做您想要的。
模板简介:该模板名称为【Python 如何使用 print() 打印类的实例?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。