python_(:

作者: 开罗酒吧 | 来源:发表于2017-06-30 17:59 被阅读0次
>>> x = (x **2 for x in range(20))
>>> print(x)
 at 0xb7307aa4>
>>> x = list(x)
>>> print(x)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]

先看下object类中对new()方法的定义:

  class object: 
    @staticmethod 
    def __new__(cls, *more): # known special case of object.__new__ 
      """ T.__new__(S, ...) -> a new object with type S, a subtype of T """ 
      pass 

object将new()方法定义为静态方法,并且至少需要传递一个参数cls,cls表示需要实例化的类,此参数在实例化时由Python解释器自动提供。

我们来看下下面类中对new()方法的实现:

  class Demo(object): 
    def __init__(self): 
      print '__init__() called...' 
    def __new__(cls, *args, **kwargs): 
      print '__new__() - {cls}'.format(cls=cls) 
      return object.__new__(cls, *args, **kwargs) 
  if __name__ == '__main__': 
    de = Demo() 

输出:

  __new__() - <class '__main__.Demo'> 
  __init__() called... 

发现实例化对象的时候,调用init()初始化之前,先调用了new()方法
new()必须要有返回值,返回实例化出来的实例,需要注意的是,可以return父类new()出来的实例,也可以直接将object的new()出来的实例返回。
init()有一个参数self,该self参数就是new()返回的实例,init()在new()的基础上可以完成一些其它初始化的动作,init()不需要返回值。
new()没有正确返回当前类cls的实例,那init()将不会被调用,即使是父类的实例也不行。
我们可以将类比作制造商,new()方法就是前期的原材料购买环节,init()方法就是在有原材料的基础上,加工,初始化商品环节。

相关文章

  • Python函数的学习笔记_函数

    Python_函数 isinstance(a,int) #判断a是否为int If not (isinstance...

  • Python容器的学习笔记_容器

    Python_容器 my_str ='abcd\tc' # my_str[0]='Q' print(my_str)...

  • 文章链接集合

    作者:Gakki Python Python_查找字典中相同与不同的部分[https://www.jianshu....

  • matplotlib之tick_params( 参数 )

    参考链接:matplotlib命令与格式:tick_params参数刻度线样式设置_Python_开码河粉-CSD...

  • Python 编译安装

    目录 http://see.sl088.com/wiki/Python_%E7%BC%96%E8%AF%91%E5...

  • python_(:

    先看下object类中对new()方法的定义: object将new()方法定义为静态方法,并且至少需要传递一个参...

  • Python_函数

    Python_函数 在我们有面向对象思想后,会更加容易的理解。所以函数的章节内容会较为精简。 调用函数 Pytho...

  • python安装

    点击进入python_官方网站下载所需版本 python2.7安装 1、双击安装文件 2、选择默认,为所有用户安装...

  • Python_函数

    一、认识函数 print() round(a, n) :四舍五入保留小数点的n位 help(函数名):查看内置函数...

  • Python_枚举

    一、枚举 Enum类 Python中所有枚举类型都是enum模块下的Enum类的子类。 枚举中的标识最好全部使用大...

网友评论

      本文标题:python_(:

      本文链接:https://www.haomeiwen.com/subject/knisxxtx.html