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

时间: 2024-10-11 17:21:43

Python核心编程这本书的一些错误的相关文章

《Python核心编程》 第十章 错误和异常

10–1. 引发异常. 以下的哪个因素会在程序执行时引发异常? 注意这里我们问的并不是异常的原因. a) 用户 b) 解释器 c) 程序 d) 以上所有 e) 只有 b) 和 c) f) 只有 a) 和 c) 答:f 10–2. 引发异常. 参考上边问题的列表, 哪些因素会在执行交互解释器时引发异常? 答:f 10–3. 关键字. 用来引发异常的关键字有那些? 答:raise 10–4. 关键字. try-except 和 try-finally 有什么不同? 答: 你可以使用 try-exce

python核心编程第二版

初学Python这是一本有关Python开发的指南涵盖近期发布的Pyttlon版本的核心功能特性,而不仅仅是语法学习更多的高阶内容,如正则表达式.网络.多线程.图形用户界面.Web/CGl和Python扩展等包括几个全新的章节,关于数据库.网络客户端.Java/Jytt30n和Microsoft Office等 展示数以百计的代码片段.交互实例和大量加强您的Python技能的实用练习"对Wesley Chun<Python核心编程>第二版的漫长等待是值得的--它的深邃.它的全面,以及

Python 核心编程 (第二版) 中文高清pdf版【110M】高清下载

Python 核心编程是经典的Python指导书,在第一版的基础上进行了全面升级.全书分为两个部分:第1部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句.语法和风格. Python对象.数字类型.序列类型.映射和集合类型.条件和循环.文件和输入/输出.错误和异常.函数和函数式编程.模块.面向对象编程.执行环境等内容:第2部分则提供了各种高级主题来展示可以使用Python做些什么,包括正则表达式.网络编程.网络客户端编程.多线程编程.图形用户界面编程. Web编程.数

python核心编程--笔记

python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行字符串心事提交的python脚本 1.8 file   以给定的文件运行python脚本 2 _在解释器中表示最后

python 核心编程摘要3

charper 2nd  quickly in 输入输出.注释.操作符.变量与赋值.python数据类型 缩进.循环与条件 文件.错误.函数.类 .模块 语句和表达式(函数和算术表达式)注意二者的区别: 语句:输出语句 print "hello world"  带关键字,告诉解释器要做(print)什么, 表达式:算术表达式(1+1) 比较表达式(1>1) str = "test" print str test str 'test' print 语句调用的是s

《Python核心编程 》手记-快速入门

春节终于over了,回归充实的学习研究生活.打开久违的CSDN博客,看到官方推送的 『博客Markdown编辑器上线啦』,让我顿时有了写作的欲望,真是程序员的福利.之前阅读各种文章书籍,都是用MarkDownPad做的笔记,喜欢以及习惯于MarkDown简洁的语法. 总之各种方便.为了试试效果,将以前阅读<Python核心编程>的手记整理发上来,也当温习一遍. 第二章 快速入门 print语句中使用字符串格式操作符,实现字符替换功能. print "%s is %d" %(

《Python核心编程》 第八章 条件和循环

8–1.条件语句. 请看下边的代码 # statement A if x > 0: # statement B pass elif x < 0: # statement C pass else: # statement D pass # statement E (a)如果 x< 0 , 上面哪个语句(A, B, C, D, E)将被执行 (b)如果 x== 0 , 上面哪个居于将被执行? (c)如果 x> 0 , 上面哪个语句将被执行? 答: a: A,C,E b: A,D,E c

《Python核心编程》 第七章 映射和集合类型 - 习题

课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {'1' :' python' } dict2 = {'2' :"hello" } dict1.update(dict2) dictAll = dict1 print dictAll Result: {'1': ' python', '2': 'hello'} 7–2. 字典的键.我们知道字典的值可以是任意的 Python 对象,那字典的键又如何呢?请试 着将除数字和字符串以外的其他不同类型

【python核心编程】第六章 序列

1.操作符 (1)成员关系操作符:in .not in >>> string ='abcdefg'>>> 'a' in stringTrue>>> 'h' in stringFalse>>> 'h' not in stringTrue *补充知识*:string模块 >>> import string>>> string.uppercase        #大写字母'ABCDEFGHIJKLMNOP