Python 特殊方法、魔法方法的轻谈

前言

    如果你使用面向对象编程,一定会经常看见特殊方法,最常见的特殊方法是__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、还有很多特殊方法…………等待你去发现与使用

上一篇:【转载】python 魔法方法详解


下一篇:c++运算符重载