博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中__str__与__repr__的区别
阅读量:6360 次
发布时间:2019-06-23

本文共 1431 字,大约阅读时间需要 4 分钟。

__str__和repr

__str__和__repr__都是python的内置方法,都用与将对象的属性转化成人类容易识别的信息,他们有什么区别呢

来看一段代码

from math import hypotclass Vector:    def __init__(self, x, y):        self.x = x        self.y = y    def __str__(self):        return 'Vector(%r,%r)' % (self.x, self.y)    def __abs__(self):        return hypot(self.x, self.y)    def __bool__(self):        return bool(abs(self))    def __add__(self, other):        x = self.x + other.x        y = self.y + other.y        return Vector(x,y)    def __mul__(self, scalar):        """相乘时调用__mul__方法"""        return Vector(self.x * scalar, self.y * scalar)

在控制台进行如下输入

from cheapter_1.vector import Vectorv1=Vector(3,4)v1
print(v1)Vector(3,4)

把__str__换成__repr__

def __repr__(self):        return 'Vector(%r,%r)' % (self.x, self.y)

在控制台重复上述操作

from cheapter_1.vector import Vectorv1 = Vector(3,4)v1Vector(3,4)print(v1)Vector(3,4)

同时定义__str__和__repr__

def __str__(self):        return "in __str__"    def __repr__(self):        return 'Vector(%r,%r)' % (self.x, self.y)

在控制台进行以下操作

from cheapter_1.vector import Vectorv1=Vector(3,4)v1Vector(3,4)print(v1)in __str__

小结

__str__和__repr__的区别主要有以下几点

  • __str__是面向用户的,而__repr__面向程序员去找
  • 打印操作会首先尝试__str__和str内置函数(print运行的内部等价形式),如果没有就尝试__repr__,都没有会输出原始对象形式
  • 交互环境输出对象时会调用__repr__

更多关于__str__与__repr__的区别:

本文部分代码来源:fluent python by Luciano Ramalho(O'Reilly).Copyright 2015 Luciano Ramalho,978-1-491-94600-8

转载于:https://www.cnblogs.com/zzliu/p/10787606.html

你可能感兴趣的文章
黄聪:wordpress伪静态的原理
查看>>
完全抽离WebAPi之特殊需求返回HTML、Css、JS、Image
查看>>
CentOS6 PEX自动化安装
查看>>
第二个冲刺周期day4
查看>>
R语言生存分析数据分析可视化案例
查看>>
变分自编码器:原来是这么一回事
查看>>
无法从“char*转换为“LPCWSTR”
查看>>
10.CCNA01第十天-配置DHCP
查看>>
ubuntu ImportError: No module named setuptools 一句命令解决方案
查看>>
Java框架部分---面试题
查看>>
Qlabel 改变字体颜色和大小
查看>>
C++(vs)多线程调试 (转)
查看>>
iOS程序员对算法的要求
查看>>
Nginx目录保护、防盗链、限速及多域名处理
查看>>
asp.net 使用JS获得串口数据
查看>>
android样式跟主题
查看>>
Charles打开无法访问网络
查看>>
2018.08.13
查看>>
WebSphere--基本特性
查看>>
PHP Jquery
查看>>