前言
如果你使用面向对象编程,一定会经常看见特殊方法,最常见的特殊方法是__init__,特殊方法最大的特点是它会被Python解释器自动调用,接下来认真学习一下
什么是特殊方法
别称:魔法方法
别称:内置方法
英文:Magic Method
特点:所有的特殊方法均会在某个特定操作时被Python解释器自动调用,同时特殊方法也支持手动调用
特殊方法的语法特点
def __init__(self, *args, **kw):
pass
特殊方法的名称前与名称后,均有2个下划线
举例说明
1、创建一个对象后,__init__方法会被自动调用,__init__是特殊方法
2、使用with 语句时,对象的__enter__方法、__exit__方法会被自动调用
这些__xx__的方法,都称为特殊方法
重写特殊方法,加入自己的业务逻辑
1、特殊方法__init__方法
实例对象创建后,会去回调__init__方法,所以我们常常会重写该方法加入自己的业务逻辑
2、特殊方法__new__
类通过调用静态方法__new__用于创建实例对象,我们可以重写__new__实现单例类
常见特殊方法
1、__init__
创建对象后,第一个被调用的方法,被称为初始化方法
2、__new__
类用于创建对象的方法
3、__del__
对象被销毁时会被调用
4、__enter__与__exit__
with语句回调的方法
5、__setattr__
当你为实例对象设置一个实例变量的时候,这个特殊方法就会被调用
6、 __eq__
self == other,即两个对象进行对比的时候,该方法会被调用
7、 __cmp__(Python3已废弃)
用于对象之间对比时调用
规则:__cmp__ 是 self < other 时返回一个负整数,在 self == other 时返回0,在 self > other 时返回正整数
取而代之的是下面几个魔法方法
__eq__`(self, other) 定义等于操作符(==)的行为。
__ne__(self, other) 定义不等于操作符(!=)的行为。
__lt__(self, other) 定义小于操作符(<)的行为。
__gt__(self, other) 定义大于操作符(>)的行为。
__le__(self, other) 定义小于等于操作符(<)的行为。
__ge__(self, other) 定义大于等于操作符(>)的行为
8、还有很多特殊方法…………等待你去发现与使用