当前位置: 首页 > article >正文

Python __str__()方法

在Python中,str() 方法是一个特殊的方法(也称为魔术方法或双下方法),它定义了当对象需要被转换为字符串表示时应该如何做。

当你尝试打印对象(使用 print() 函数)或将对象插入到需要字符串表示的上下文中(比如字符串格式化或拼接)时,Python会自动调用该对象的 str() 方法。

基本用法

str() 方法应该返回一个字符串,这个字符串是对对象状态的合理描述。它没有参数(除了 self),并且必须被定义为一个实例方法。

class MyClass:  
    def __init__(self, name, value):  
        self.name = name  
        self.value = value  
  
    def __str__(self):  
        return f"MyClass(name={self.name}, value={self.value})"  
  
# 实例化 MyClass 并打印  
obj = MyClass("example", 42)  
print(obj)  # 输出: MyClass(name=example, value=42)

repr() 的区别

str() 和 repr() 都是用于生成对象的字符串表示的特殊方法,但它们有不同的用途和期望的输出:

str():应该返回一个对用户友好的、可读性强的字符串表示,主要用于打印和日志记录等场景。
repr():应该返回一个对开发者友好的、尽可能准确的字符串表示,通常包括对象的类型和足够的信息来重新创建该对象(如果可能的话)。它通常被用于调试,并且 repr() 函数会调用它。
如果 str() 没有被定义,那么在需要字符串表示时,Python会回退到调用 repr()。但是,最好同时定义这两个方法,以确保对象在不同上下文中都能有合适的表现。

示例
下面是一个同时定义了 str() 和 repr() 方法的示例:

class Point:  
    def __init__(self, x, y):  
        self.x = x  
        self.y = y  
  
    def __str__(self):  
        return f"Point({self.x}, {self.y})"  
  
    def __repr__(self):  
        return f"Point(x={self.x}, y={self.y})"  
  
# 实例化 Point 并测试输出  
p = Point(3, 4)  
print(p)        # 输出: Point(3, 4)  
print(repr(p))  # 输出: Point(x=3, y=4)

在这个例子中,str() 提供了一个简洁的用户友好表示,而 repr() 提供了一个更详细且可能包含更多信息的开发者友好表示。


http://www.kler.cn/a/389254.html

相关文章:

  • 11Java面向对象高级(篇2,Java程序的核心套路!!!!)
  • LeetCode【0027】移除元素
  • PYNQ 框架 - 中断(INTR)驱动
  • GEE 数据集——美国gNATSGO(网格化国家土壤调查地理数据库)完整覆盖了美国所有地区和岛屿领土的最佳可用土壤信息
  • 华为大咖说 | 浅谈智能运维技术
  • macOS 设置固定IP
  • 十九、计算机视觉-轮廓检测
  • 聚焦医疗发展|暴雨信创方案亮相医疗卫生信息技术创新高峰大会
  • 物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?
  • etcd分布式键值存储系统
  • 阿里1688 阿里滑块 231滑块 x5sec分析
  • 基于python的线性代数相关计算
  • 深入探究R语言中的机器学习应用——从基础到实战
  • 3分钟部署上线小产品?Cursor 和 Devbox 让开发从未如此简单
  • 常见计算机网络知识整理(未完,整理中。。。)
  • JS的DOM事件监听 (鼠标事件,键盘事件,表单事件)
  • Harmony鸿蒙高级证书考试
  • 【Golang】Go语言环境安装
  • 【IC每日一题:IC验证面试--UVM验证-2】
  • 知乎日报前三周总结
  • LabVIEW编程基础教学(一)--介绍
  • Elasticsearch如果集群出现节点故障,我应该如何快速定位问题?
  • 【Linux】 IPC 进程间通信(三)(消息队列 信号量)
  • 【Kafka】Windows+KRaft部署指南
  • python manage.py命令集
  • 【微服务知识】开源RPC框架Dubbo入门介绍