千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:成都千锋IT培训  >  技术干货  >  python魔术方法是什么

python魔术方法是什么

来源:千锋教育
发布人:xqq
时间: 2023-11-07 15:45:56

1、什么是魔术方法

魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,你可以定义自己想要的行为,而这一切都是自动发生的。它们经常是两个下划线包围来命名的(比如__init__,__lt__),Python的魔法方法是非常强大的,所以了解其使用方法也变得尤为重要!

2、__init__(self[,...]),__new__(cls[,...]),__del__(self)

__init__构造器,当一个实例被创建的时候初始化的方法。但是它并不是实例化调用的第一个方法,__new__才是实例化对象调用的第一个方法,它只取下cls参数,并把其他参数传给__init__。__new__很少使用,但是也有它适合的场景,尤其是当类继承自一个像元组或者字符串这样不经常改变的类型的时候。

__new__使用时注意以下四点:

1.__new__是在一个对象实例化的时候所调用的第一个方法

2.它的第一个参数是这个类,其他的参数是用来直接传递给__init__方法

3.__new__决定是否要使用该__init__方法,因为__new__可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的

实例,如果__new__没有返回实例对象,则__init__不会被调用

4.__new__主要是用于继承一个不可变的类型比如一个tuple或者string

5.__new__return的是一个构建的实例

__new__实现单例模式:

classPerson(object):

def__init__(self,name,age):

self.name=name

self.age=age

def__new__(cls,*args,**kwargs):

ifnothasattr(cls,'instance'):

cls.instance=super(Person,cls).__new__(cls)

returncls.instance

a=Person('p1',20)

b=Person('p2',21)

print(a==b)

#这里的打印结果是True,可见a,和b都是同一个实例

#单例作用:

#第一、控制资源的使用,通过线程同步来控制资源的并发访问;

#第二、控制实例产生的数量,达到节约资源的目的。

#第三、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不##相关的两个线程或者进程之间实现通信。

#比如,数据库连接池的设计一般采用单例模式,数据库连接是一种数据库资源。

以上内容为大家介绍了Python培训之魔术方法是什么,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python delattr函数如何使用?

2023-11-10

python time.strptime的格式化

2023-11-10

pythonGIL在Python多线程的应用

2023-11-10

最新文章NEW

python中pdb模块怎么用?

2023-11-10

Python如何截图保存?

2023-11-10

python​中缺少module怎么办?

2023-11-10

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>