怎么使用Python中的__str__()和__repr__()

发布时间:2021-11-22 11:39:44 作者:iii
来源:亿速云 阅读:149
# 怎么使用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)

特点


2. __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)

特点


3. 两者的区别

特性 __str__() __repr__()
目标用户 终端用户 开发者
用途 可读性输出 调试、重新创建对象
调用场景 print()str() repr()、交互式环境
默认行为 若未定义,调用__repr__() 若未定义,返回内存地址信息

4. 最佳实践

  1. 始终实现__repr__()
    因为它能提供对象的明确信息,对调试至关重要。

  2. 按需实现__str__()
    如果需要一个用户友好的输出,再额外实现该方法。

  3. 保持一致性
    __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)

5. 总结

掌握这两个魔术方法的使用,能够让你的Python类更加专业和易用! “`

推荐阅读:
  1. 怎么用python实现复制粘贴功能
  2. 怎么在Python中使用sql语句多条件模糊查询mysql数据库

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:JSP和Servlet之间有什么区别

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》