开发者社区> 郭大瘦> 正文

python面向对象——类的特殊方法(非运算特殊方法)

简介: 在python中,所有的code都是在对象中进行工作的,python2中的许多函数到了python3中都一一转化为对象,在使用的时候要按照对象的使用方法来进行操作。
+关注继续查看

在python中,所有的code都是在对象中进行工作的,python2中的许多函数到了python3中都一一转化为对象,在使用的时候要按照对象的使用方法来进行操作。可以通过“is”操作符来判断两者是不是同一对象,也可以通过id()来进行唯一性的判断。

现在要说的特殊方法,就是python设计类时候编写的方法,通常是__ 开头,例如 :__str____get__
python中有“很多”的特殊方法,具体有多少,数了数大概有83个,其中有47个用于实现算术运算、位运算和比较操作。

这里介绍非运算的特殊方法。
按照常用顺序进行排序:

1、__init__(self[, ...])

最基本的特殊方法,在此类对象被创建的时候执行该函数,该特殊方法主要用来对此对象的数据进行初始化,不可返回non-none value(如果返回会提示出现TypeError),另外有继承现象的时候,如果基类中有该方法,那么在子类的__init__方法中必须显示进行调用父类的方法保证类成员的正确初始化:一般用super().__init__([args...]).

2、__new__(cls[, ...])

__new__方法为静态方法,所以一般在类中我们不会对其进行显式定义,它在一个类生成对象的时候会自动执行,如果new方法不执行,那么init方法也就不会执行,当热可以被重载定义__new__修改其内容实现自定义类创建。

3、__dir__(self)

dir()函数对该类执行的时候,该方法会返回 list of attributes ,也就是在该特殊方法中返回list列表,内容自己编写。

4、__del__(self)

类似于C++的析构函数但又不完全相同,与__init__类作用域相反,在该对象被销毁的时候会执行该特殊函数,如果该对象存在一份引用,那么对该对象的销毁会进行延迟,但是注意,__del__()方法不会执行两侧,解释器会在一个对象的所有引用都不存在的时候执行一次也就一次__del__方法。

5、__repr__(self)

比较正式地,将一个对象用字符串的形式表达出来以便于辨认。也可以说是“字符串表示形式”。repr就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式的。如果没有实现__repr__那么在控制台打印一个向量实例的时候,得到的字符串可能是<Vector object at 0x*********>

6、__str__(self)

str与repr类似,但是不是那么的“正式”,它对终端更友好一些,在对象被str()函数使用、或者被print函数调用的时候才会执行。如果str没有被定义,那么在需要执行str的时候,解释器会试图调用repr方法。

7、__getitem__(self, key)

在使用self[key]的时候会进行调用,对于连续的序列,key值应该是整数或者切片。注意负整数的key也是由__getitem__()来决定的。如果key值不正确,那么会出现TypeError ,如果key值超出索引范围,那么会出现IndexError 。对于mapping的类型来说,如果缺少key,那么会出现KeyError 。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python自动化办公之Excel对比工具
今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍!
7 0
Python自动化办公之PDF拆分工具
今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍!
5 0
鬼才!用Python计算圆周率 π
鬼才!用Python计算圆周率 π
7 0
建议收藏丨sql行转列的一千种写法!!
建议收藏丨sql行转列的一千种写法!!
10 0
我绘制文章插图的三个神级工具
今天来给大家介绍三个我在制作文章插图时经常使用的堪称神级的工具,每一个工具都可以绘制非常精美图片,对于经常输出文章的朋友来说,绝对不容错过~
6 0
10行Python代码能做出哪些有趣的事情?
Python 凭借语法的易学性,代码的简洁性以及类库的丰富性,赢得了众多开发者的喜爱。下面我们来看看,用不超过10行代码能实现些什么有趣的功能
13 0
使用 Python 实现一个简单的智能聊天机器人
使用 Python 实现一个简单的智能聊天机器人
11 0
Python自动化办公之 Excel 自动绘制图表
Python自动化办公之 Excel 自动绘制图表
6 0
〖Docker指南⑦〗docker-compose快速入门
由Docker引领先锋,容器在过去的一年里得到了飞速发展。容器技术提供了组件化环境,帮助应用在云之间轻松迁移而无需显著的返工。当谈到构建云以及非云的应用时,容器的战斗口号是可移植性和简单性。
8 0
+关注
郭大瘦
个人网站 oldpan.me
100
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载