首页 / 知识
python魔术方法是什么
2023-11-12 13:09:00
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相关知识,请关注我们
最新内容
相关内容
python有map方法吗
python有map方法吗,培训,位置,数据,函数,列表,序列,参数,元素,方法,使用方法,python中的map:map()会根据提供的函数对指定序列做映射。第一个python不定参数传值怎么做
python不定参数传值怎么做,位置,培训,名称,标准,代码,参数,函数,定义,教程,程序,使用*arg_name定义的位置参数,表示任意多个位置参数;Python标python 培训之 object是什么类型
python 培训之 object是什么类型,培训,类型,实例,顶端,对象,关系,链条,父子,数据类型,属性,在Python的世界中,object是父子关系的顶端,所有的数python安装第三方库失败怎么办
python安装第三方库失败怎么办,工具,在线,培训,情况,名字,管理系统,管理,命令,脚本,下面,python安装第三方库有两种方式:1.使用pip命令行工具python爬虫和数据分析有哪些第三方
python爬虫和数据分析有哪些第三方库?,培训,爬虫,和数,以上,更多,内容,以上内容为大家介绍了爬虫和数据分析有哪些第三方库,希望对大家有所python数据分析相关的技术
python数据分析相关的技术,分析,数据,培训,技术,python爬虫和数据分析有哪些第三方
python爬虫和数据分析有哪些第三方库?,培训,爬虫,和数,python如何连接mysql数据库
python如何连接mysql数据库,培训,数据,项目,一致,流程,数据库,参数,结果,接口,语句,python数据库接口支持非常多的数据库,你可以选择适合你项python定时修改数据库
python定时修改数据库,时间,服务,培训,单位,代码,标准,线程,操作,时间差,进程,1.传入执行改库操作的时间update_time,用update_time和当前时间python如何安装第三方函数库
python如何安装第三方函数库,工具,在线,培训,情况,管理系统,名字,管理,命令,函数库,脚本,python安装第三方库有两种方式:1.使用pip命令行工具python有哪些方法可以解压文件?
python有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大。python函数与方法的区别是什么
python函数与方法的区别是什么,培训,函数,方法,区别,对象,以上,方式,更多,内容,python中函数和方法的区别1、函数要手动传self,方法不用传sel