(转)Python中的常见特殊方法—— repr方法
原文链接:https://www.cnblogs.com/tizer/p/11178473.html
在Python中有些方法名、属性名的前后都添加了双下划线,这种方法、属性通常都属于Python的特殊方法和特殊属性,开发者可以通过重写这些方法或者直接调用这些方法来实现特殊的功能。其实前面见过的构造方法__init__() 就是一种特殊方法,开发者可以通过重写类中的__init__方法实现自己想要的初始化逻辑。
Python类中的特殊方法、特殊属性有些需要开发者重新写,有些则可以直接调用。
栗子:
1 #coding=utf-8 2 class Item(): 3 def __init__(self,name,price): 4 self.name=name 5 self.price=price 6 #创建一个Item对象,将之赋值给it变量 7 it = Item('鼠标',29.8) 8 #打印it所引用的Item对象 9 print(it)
打印如下:
解释:上面程序创建了Item对象,然后使用print() 方法输出Item 对象。
运行程序之后可能出现不同的输出结果:at后面的16位十六进制数字可能发生改变。it本来是Item的一个实例对象,但是为什么输出的是这样的字符串?这就是因为有__repr__()方法,控制台打印的其实是__repr__()方法的返回值。所以说打印it 或者是打印 im.__repr__()效果是一样的。
1. __repr__()方法是object类提供的方法,而所有的Python类都是object类的子类,因此所有的Python对象都具有__repr__() 方法。所以如果需要将任何对象与字符串进行连接时,都可先调用__repr__()方法将对象转为字符串,再将字符串连接在一起。
2. __repr__()之所以特殊,是因为它是一个“自我描述”的方法,该方法通常实现场景是:当开发人员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用来告诉外界该对象具有的状态信息。
3. object类提供的__repr__()方法总是返回该对象实现类的“类名+object at + 内存地址 ”值,这个返回值并不能真正实现“自我描述”的功能,因此如果用户需要自定义类能实现“自我描述”的功能,就必须重写__repr__()方法。
大部分时候,重写__repr__() 方法总是返回该对象令人感兴趣的信息所组成的字符串。通常可返回如下格式的字符串:
类名[field1=值1,field2=值2,...]
原文地址:https://www.cnblogs.com/feiquan/p/11730941.html
- 如何使用Hue创建Spark1和Spark2的Oozie工作流
- 【译】深入研究 Laravel 的依赖注入容器
- 一次XSS突破的探险
- 如何使用Hue创建Spark2的Oozie工作流(补充)
- 如何基于CDSW基础镜像定制Docker
- OVSDB介绍及在OpenDaylight中的调用
- 如何在CDH集群的非元数据库节点安装MySQL5.7.12
- PySpark数据类型转换异常分析
- SQLI-LABS 更新帖(二)
- 如何重置Hue用户密码
- 如何使用R连接Hive与Impala
- Equation Group泄露工具之vBulletin无文件后门分析
- 如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业
- 如何使用Beeline连接Impala
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Nginx技术(附软件分享)
- (必考)关于JS中this关键字的说法,下面错误的是?
- OA项目总结(附程序源码)
- Redis技术(附软件分享)
- Redis项目案例
- 前端测试题:(解析)关于JS中this关键字的说法,下面错误的是?
- PostgreSQL 内存消耗从LINUX 系统层次看
- RBAC模型与权限系统的梳理(附案例源码)
- Maven项目中常用jar包的坐标以及用法(个人总结)
- MyCat------基于java语言的数据库中间件
- Solr技术(附软件分享)
- VSFTPD技术
- Shiro——基于java的安全框架
- 电子圆二色谱(ECD)的理论计算
- 用 80 行 Javascript 代码构建自己的语音助手