python的魔法方法

python的魔法方法


python中的魔法方法是一些可以让你对类添加“魔法”的特殊方法,它们经常是两个下划线包围来命名的,比如 __init__, __call__。魔法方法可以使Python的自由度变得更高,在面向对象方面表现的更好。

python有很多魔法方法,根据其作用和特点,归纳总结为以下几类

1. 基础魔法方法


1.1 __new__

__new__ 是真正的构造函数,在实例化对象时被调用,通常你不会实现这个方法,除非你想对实例的创建进行控制,比如利用__new__ 写一个单例模式,参见文章python实现单例模式的5种方法

1.2 __init__

__init__ 被用于初始化实例对象,__new__方法创建对象后就会调用该方法对实例的属性进行初始化。很多人误以为__init__是构造函数,这是不对的,面试的时候经常拿他们两个做比较。

1.3 __del__

__del__ 是析构方法,当对象的引用计数变为0时,这个对象会被销毁掉,此时就会调用__del__方法

classT:
    def__del__(self):
        print("对象被销毁")

t = T()
t = 0# t指向0, 此前创建的T的实例被销毁print('ok')

程序输出结果

对象被销毁
ok

当变量t重新赋值为0时,此前创建的T的实例由于引用计数变为了0,对象被销毁,__del__ 被调用,而后执行print('ok')语句。

1.4 __call__

允许一个类的实例像函数一样被调用,这是一个非常重要的特性,与他相关的python概念还有callbale,参见文章python callable概念

下面的示例代码向你展示如何使用__call__

classT:
    def__call__(self, *args, **kwargs):
        print("类的实例可以像函数一样被调用")

t = T()
t()

1.5 __len__

cl
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhongguo_boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值