前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python面向对象编程-魔术方法-__str__和__repr__方法

Python面向对象编程-魔术方法-__str__和__repr__方法

原创
作者头像
玖叁叁
发布2023-04-19 09:12:37
2350
发布2023-04-19 09:12:37
举报
文章被收录于专栏:玖叁叁

在Python面向对象编程中,魔术方法是一组特殊的方法,用于在特定情况下调用对象的操作。其中,__str__和__repr__方法是最常用的魔术方法之一。这两个方法都是用于打印对象时的字符串表示形式,但它们的作用略有不同。

__str__方法用于在print语句中打印对象时的字符串表示形式。该方法返回一个字符串,该字符串是对象的可读性更好的表示形式,通常用于向终端输出信息。

__repr__方法返回一个字符串,该字符串是用于在Python解释器中重新创建该对象的字符串表示形式。通常情况下,该字符串应该是一个Python表达式,可以直接传递给Python解释器。

下面是一个简单的例子,演示了如何使用__str__和__repr__方法:

代码语言:javascript
复制
class MyClass:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"{self.name} is {self.age} years old."
    
    def __repr__(self):
        return f"MyClass('{self.name}', {self.age})"
    
obj = MyClass("Alice", 25)

# 使用__str__方法打印对象的可读性更好的表示形式
print(obj)  # 输出: Alice is 25 years old.

# 使用__repr__方法打印对象的字符串表示形式
print(repr(obj))  # 输出: MyClass('Alice', 25)

在上面的例子中,我们定义了一个MyClass类,并在其构造函数中初始化了两个属性:name和age。接着,我们实现了__str__和__repr__方法。在__str__方法中,我们返回了一个字符串,描述了该对象的可读性更好的表示形式。而在__repr__方法中,我们返回了一个字符串,用于在Python解释器中重新创建该对象。最后,我们创建了一个MyClass对象obj,并使用print语句和repr函数分别打印了它的可读性更好的表示形式和字符串表示形式。

需要注意的是,__repr__方法返回的字符串必须是一个有效的Python表达式,可以直接传递给Python解释器。如果返回的字符串不是一个有效的Python表达式,那么在使用eval函数或者直接复制该字符串时会引发语法错误。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档