码迷,mamicode.com
首页 > 其他好文 > 详细

__new__,__init__,__call__方法的区别

时间:2020-02-03 15:58:39      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:rgs   调用   *args   ini   类型   参数   __call__   创建对象   重载   

  • 1.__new__(cls, *args, **kwargs)  创建对象时调用,是一个静态方法,返回当前对象的一个实例;   注意:这里的第一个参数是cls即class本身
  • 2.__init__(self, *args, **kwargs) 创建完对象后调用,对当前对象的实例的一些初始化,无返回值,即在调用__new__之后,根据返回的实例初始化;注意,这里的第一个参数是self即对象本身【注意和new的区别】
  • 3.__call__(self,  *args, **kwargs) 如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符, 对象可call,注意不是类,是对象

先有创建,才有初始化。即先__new__,而后__init__。

关于__call__方法,先提到一个概念,叫可调动对象,平时定义的函数,内置函数和类都属于可调用对象,如果类中实现了__call__方法,那实例对象将成为一个可调用对象。

__new__,__init__,__call__方法的区别

标签:rgs   调用   *args   ini   类型   参数   __call__   创建对象   重载   

原文地址:https://www.cnblogs.com/xiongying4/p/11504202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!