您的位置:首页 > 编程语言 > Python开发

Python核心编程这本书的一些错误

2016-06-14 21:56 549 查看
《Python核心编程第二版》这本书比《Python基础教程第二版修订版》详细很多,丰富了很多细节,虽然它是一本经典的入门书,但我发现还是存在一些明显的错误。在面向对象编程这一章,有两个错误

1).它说任何类都有一些内置的特殊的类属性(即程序员不在类中定义也会存在),见截图



2).它说__new__方法比__init__方法更像是类的构造器。见截图:



下面进行测试:

#encoding:utf-8
class MyClass():
def doPrint(self):
print 'doPrint invoked..'

def __init__(self):
print '__init__ method invoked..'

def __new__(self):
print '__new__ method invoked..'

def __test__(self):
print '__test__ method invoked..'

class MyClass2():
pass

if __name__=='__main__':
print dir(MyClass2)
print MyClass2.__dict__

mc=MyClass()
mc.__test__()
mc.__new__()


输出结果:

['__doc__', '__module__']
{'__module__': '__main__', '__doc__': None}
__init__ method invoked..
__test__ method invoked..
__new__ method invoked..


通过分析测试结果可以发现:

对于1),默认情况下,类没有那么多特殊属性。

对于2),默认情况下,任何一个类都不包含__new__方法(dir(MyClass2)可以看到),而且即使程序员显式地定义该方法,类在实例化的时候也不会调用它,而只会调用__init__方法,__new__方法仅仅作为一个普通的实例方法存在,在显式调用它时才会起作用。

测试平台为Windows7,Python2.7.11
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: