当前位置:   article > 正文

python的魔法方法_python 魔法方法

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__方法

  1. classT:
  2. def__del__(self):
  3. print("对象被销毁")
  4. t = T()
  5. t = 0# t指向0, 此前创建的T的实例被销毁print('ok')

程序输出结果

  1. 对象被销毁
  2. ok

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

1.4 __call__

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

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

  1. classT:
  2. def__call__(self, *args, **kwargs):
  3. print("类的实例可以像函数一样被调用")
  4. t = T()
  5. t()

1.5 __len__

cl
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/756685
推荐阅读
相关标签
  

闽ICP备14008679号