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

前言

    如果你使用Python并使用面向对象编程,一定会经常见特殊方法,最常见的特殊方法是__init__,特殊方法最大的特点是它会被Python解释器自动调用,接下来认真学习一下(当然所有的特殊方法当然是定义在类中的)

什么是特殊方法?

    特殊方法是定义在类中的实例方法,因为支持自动调用,所以称为特殊方法!

别称1:魔法方法

别称2:内置方法

英文名: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 时返回正整数

取而代之的是下面几个魔法方法(shell里面也是这个……)

__eq__`(self, other) 定义等于操作符(==)的行为。

__ne__(self, other) 定义不等于操作符(!=)的行为。

__lt__(self, other) 定义小于操作符(<)的行为。

__gt__(self, other) 定义大于操作符(>)的行为。

__le__(self, other) 定义小于等于操作符(<)的行为。

__ge__(self, other) 定义大于等于操作符(>)的行为

8、还有很多特殊方法…………等待你去发现与使用

9、__hash__

只有定义此方法的对象,才能作为哈希容器中的Key对象

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值