1. 首页
  2. Python

python中的__init__ 、__new__、__call__小结

“u003Cdivu003Eu003Cpu003Eu003Cstrongu003E1.__new__(cls, *args, **kwargs) 创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是cls即class本身u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E2.__init__(self, *args, **kwargs) 创建完对象后调用,对当前对象的实例的一些初始化,无返回值,即在调用__new__之后,根据返回的实例初始化;注意,这里的第一个参数是self即对象本身【注意和new的区别】u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E3.__call__(self, *args, **kwargs) 如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E看具体的例子:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fe0ae1c6a13914850aeff5ce7a4a1c5e8″ img_width=”431″ img_height=”280″ alt=”python中的__init__ 、__new__、__call__小结” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E打印出来的是:u003Cu002Fpu003Eu003Cpreu003Enewu003Cbru003Einitu003Cbru003E________u003Cbru003Ecallu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E比如:Python Singleton(单例模式)实现,那我们是不是只是重载一些__new__方法就可以了u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1c6e3ab97d174926a9620867fa211f35″ img_width=”661″ img_height=”153″ alt=”python中的__init__ 、__new__、__call__小结” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E可不可以重载__init__方法呢?明显不可以,因为__init__之前调用了__new__方法,这时候已经生成了一个对象了,没办法实现单例模式u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:python中的__init__ 、__new__、__call__小结

主题测试文章,只做测试使用。发布者:~那﹑男人是我的命﹪,转转请注明出处:http://www.cxybcw.com/13112.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code