您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎么使用Python中的__str__()和__repr__()
在Python中,`__str__()`和`__repr__()`是两个重要的魔术方法(magic methods),用于定义对象的字符串表示形式。虽然它们的功能相似,但使用场景和目的有所不同。本文将详细介绍它们的区别、用法以及如何在实际开发中正确实现这两个方法。
## 1. `__str__()`方法
`__str__()`方法用于返回对象的“非正式”或可读性好的字符串表示,通常面向终端用户。当你使用`print()`函数或`str()`函数时,Python会调用该方法。
### 示例代码
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
p = Person("Alice", 30)
print(p) # 输出:Person(name=Alice, age=30)
__str__()
,Python会调用__repr__()
作为备用。__repr__()
方法__repr__()
方法返回对象的“正式”字符串表示,通常是合法的Python表达式,能够用于重新创建该对象。它主要面向开发者,常用于调试。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
p = Person("Alice", 30)
print(repr(p)) # 输出:Person(name='Alice', age=30)
eval(repr(obj))
应能重新创建对象。__repr__()
。特性 | __str__() |
__repr__() |
---|---|---|
目标用户 | 终端用户 | 开发者 |
用途 | 可读性输出 | 调试、重新创建对象 |
调用场景 | print() 、str() |
repr() 、交互式环境 |
默认行为 | 若未定义,调用__repr__() |
若未定义,返回内存地址信息 |
始终实现__repr__()
因为它能提供对象的明确信息,对调试至关重要。
按需实现__str__()
如果需要一个用户友好的输出,再额外实现该方法。
保持一致性
__repr__()
的输出应尽量满足eval(repr(obj)) == obj
。
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
def __str__(self):
return f"({self.x}, {self.y})"
p = Point(1, 2)
print(str(p)) # 输出:(1, 2)
print(repr(p)) # 输出:Point(1, 2)
__str__()
用于用户友好的输出,__repr__()
用于开发者调试。__repr__()
,再根据需要实现__str__()
。掌握这两个魔术方法的使用,能够让你的Python类更加专业和易用! “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。