Python需要了解清楚的问题

问题一:_和__的区别是什么?

python中没有私有属性或方法,加上单下划线用例提示该属性或方法不应在外部调用,但是调用了也不会出错,但不符合规范,例如print mc._hello和mc._printStr()。

加双下划线的作用是避免子类覆盖其内容,mc.__world和mc.__printStr2()调用会报错,但可以在前面加上_MyClass调用。

问题二:迭代器和生成器有什么区别?

迭代器表示对象是可迭代的,可一个一个地读取它的每一项,但是必须把它们的值都放在内存里,值比较多时会消耗太多的内存。

生成器是迭代器的一种,但只能迭代它们一次,最后会报StopIteration异常,因为它们的值不是全部存在内存里的,只在要调用的时候在内存生成。

问题三:__init__和__new__的作用是什么?

__new__是创建类实例的方法,__init__是类实例创建后进行初始化的方法,在__new__方法后调用。__new__方法通常情况下是使用 super(类名, cls).__new__(cls, … …) 这样的方式返回,可用__new__实现单例。

更多问题见:https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/index.html

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180201G0FMJ500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券