问题一:_和__的区别是什么?
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
领取专属 10元无门槛券
私享最新 技术干货