Python核心编程这本书的一些错误
Posted morein2008
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python核心编程这本书的一些错误相关的知识,希望对你有一定的参考价值。
《Python核心编程第二版》这本书比《Python基础教程第二版修订版》详细很多,丰富了很多细节,虽然它是一本经典的入门书,但我发现还是存在一些明显的错误。在面向对象编程这一章,有两个错误
1).它说任何类都有一些内置的特殊的类属性(即程序员不在类中定义也会存在),见截图
2).它说__new__方法比__init__方法更像是类的构造器。见截图:
下面进行测试:
1 #encoding:utf-8 2 class MyClass(): 3 def doPrint(self): 4 print \'doPrint invoked..\' 5 6 def __init__(self): 7 print \'__init__ method invoked..\' 8 9 def __new__(self): 10 print \'__new__ method invoked..\' 11 12 def __test__(self): 13 print \'__test__ method invoked..\' 14 15 class MyClass2(): 16 pass 17 18 if __name__==\'__main__\': 19 print dir(MyClass2) 20 print MyClass2.__dict__ 21 22 mc=MyClass() 23 mc.__test__() 24 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
以上是关于Python核心编程这本书的一些错误的主要内容,如果未能解决你的问题,请参考以下文章