6.4 一些说明 数据属性可以重写同名的方法属性。这是为了避免在大型系统中产生问题的意外名称冲突。所以用一些减 少冲突的常用方法是很有效果的。常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性 的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性。 数据属性就像和对象的普通用户一样可以被方法引用。换句话说,类不能用来实现纯净的数据类型。事实 上,在 python中不能强制数据隐藏,一切基于约定。(另一方面,如 C 中写的,python的实现可以做到完 全隐藏实现细节并且在必要是可以控制对象的访问,这可以通过 C语言扩展 Python) 客户应该谨慎使用数据属性,客户可能会混淆通过方法来维护的常量。而践踏他们的数据属性。注意只要 能避免重复,客户可以自己添加数据属性给对象实例,而不影响方法的合法性--再次,命名约定可以避免 很多麻烦。 从方法内部引用数据属性(或者其他方法)是没有便捷方式的。 我发现这可以增加方法的可读性,当浏览 一个方法时,不会轻易混淆局部变量和实例变量。 常常,方法的第一参数称为 self。 这里除了约定在没有其他意思,名称 self 对 python绝对没有特别的含义。 但是,要注意,如果不遵守这种约定,你的代码可能对其他 python程序员来说可读性很差。也可以理解, 类浏览程序可能就是基于这种约定的写成的。 任何作为类属性的函数对象定义了一个该类实例的方法。在类定义中在书面上函数定义是封装的有时是没 有必要的,也可以把一个函数对象赋值给在类中的局部变量。例如: # Function defined outside the class def f1(self, x, y): return min(x, x+y) class C:
2021-08-23 19:38:42 1.32MB Python3.2.3 翻译
1
7.10 性能评测 一些 python使用者对于同一问题的不同解决办法的性能很感兴趣。Python提供了一种评测工具就可以马上 回答这些问题。 例如, 当封装参数的时候可以用元组封装和拆封特性来代替传统的方法。Timeit 模块中可以迅速描述一个 性能优势。 >>> from timeit import Timer >>> Timer(’t=a; a=b; b=t’, ’a=1; b=2’).timeit() 0.57535828626024577 >>> Timer(’a,b = b,a’, ’a=1; b=2’).timeit() 0.54962537085770791 与 timeit 的细粒度相比,profile 和 pstate 模块提供了在大代码块中识别时间临界区的工具。 7.11 质量控制 开发高质量的软件的方法之一就是对每个功能写测试用例。在开发过程中频繁地运行这些用 例。 Doctest 模块提供一个扫描模块和验证嵌套在程序文档字符中的测试。测试编制是简单 的把一个典型的调用及它的结果剪切并粘贴到文档字符串里。这通过为用户提供一个实例改 善了文档,并且它允许 doctext 模块确认代码和文档相符。 Unittest 模块不像 doctest 模块那么容易使用。但是,它允许一个更加复杂的测试来维护 分开文件。
2021-08-23 19:35:22 1.32MB Python3.2.3 翻译
1
7.5 字符串模式匹配 re 模块为高级字符串成处理提供了正则表达式匹配。 对于复杂的匹配和处理,正则表达式能够提供简明优 化的方法: >>> import re >>> re.findall(r’\bf[a-z]*’, ’which foot or hand fell fastest’) [’foot’, ’fell’, ’fastest’] >>> re.sub(r’(\b[a-z]+) \1’, r’\1’, ’cat in the the hat’) ’cat in the hat’ 当仅仅需要一些简单的功能时候,优先使用 string方法,因为它更容易读取和调试。 >>> ’tea for too’.replace(’too’, ’two’) ’tea for two’ 7.6 数学 数学模块为浮点数运算提供了对底层 C 函数库的访问支持。 >>> import math >>> math.cos(math.pi / 4) 0.70710678118654757 >>> math.log(1024, 2) 10.0 Random模块为生成随机选择提供了工具。 >>> import random >>> random.choice([’apple’, ’pear’, ’banana’]) ’apple’ >>> random.sample(range(100), 10) # sampling without replacement
2021-08-23 17:02:05 1.32MB Python3.2.3 翻译
1
自己搜集的WPF编程宝典:使用C# 2012和.NET 4.5(第4版).pdf,附带书本中的源码,源码是自己买的实体书里面的。有时候网上很难找到,现在共享给大家,知识共享,有需要的自行下载 图书是高清扫描版本,学习建议还是买实体书吧
2021-08-22 16:54:02 107.07MB WPF C# .net
1
《c#6.0学习笔记》随书光盘及pdf和源代码,这三部分内容都在这一个资源里面,视频教程很难找,在网上找了很久很久,和大家分享一下。
1
VTK图形图像开发进阶 完整PDF 张晓东,罗火灵著9787111496281机械工业出版 出版日期:2015-04-01 总页数:328
2021-08-19 17:07:42 65.08MB VTK OPENGL C++
1
Informix ESQLC 开发中文完整版,pdf格式包含25个章节: 1.INFORMIX产品介绍 2.INFORMIX-ESQL/C介绍 3.数据库stores5 4.在INFORMIX-ESQL/C中嵌入SQL语句 5.编译INFORMIX-ESQL/C程序 6.在INFORMIX-ESQL/C中使用简单变量 7.ESQL/C简单插入语句 8.ESQL/C程序中的SQL通讯区 9.ESQL/C程序中的异常检测 10.ESQL/C中单记录的检索和查询 11.ESQL/C程序中使用DECIMAL数据类型 12.ESQL/C中使用DATETIME和INTERVAL数据类型 13.ESQL/C中使用VARCHAR数据类型 14.SQL游标概览 15.ESQL/C程序中使用滚动游标 16.ESQL/C中的数据库删除和修改操作 17.ESQL/C程序中使用更新游标 18.在ESQL/C程序中使用插入游标 19.在ESQL/C程序中使用BYTE和TEXT数据类型 20.提高ESQL/C程序的运行效率 21.在ESQL/C中有效使用滚动游标 22.控制数据库服务 23.动态SQL基本知识 24.使用动态描述区域的动态SQL 25.使用SQLDA的动态SQL
2021-08-17 14:29:47 2.04MB c esqlc informix sqlda
1
程序员修炼之道 从小工到专家
2021-08-15 08:42:29 17.12MB 修炼之道
1
Ubuntu Server最佳方案[高清完整PDF版].pdf
2021-08-15 01:31:29 109.89MB 系统
1
第三章 数据结构 这章将详细学习你以前已经知道的知识,同时也会添加一些新知识。 3.1 列表 列表数据类型有很多方法,以下是列表对象的所有方法: list.append(x) 添加单个元素到列表末尾,等同于 a[len(a)] = [x] list.extend(L) 通过添加指定列表中所有的元素来扩展列表,等同于 a[len(a):] = L. list.insert(i, x) 把单个元素插入到制定的元素。第一个参数是在列表中的索引。因此 a.insert(0, x)意思是吧 元素 X 插入到列表最前面,a.insert(len(a), x) 等同于 a.append(x). list.remove(x) 从列表中删除第一个值为 x 的元素,如果没这个元素将会出错。 list.pop([i ]) 删除指定位置的元素,并且返回该元素,如果没有指定的索引,a.pop()就会删除列表中最后 一个元素,括号中的参数是可以选择的。 list.index(x) 返回列表中第一个满足值为 X 元素的索引,如果没有该元素就会出错。 list.count(x) 计算在列表中值为 x的元素出现的次数。 list.sort() 对列表中的元素进行排序。 list.reverse()
2021-08-14 03:24:19 1.32MB Python3.2.3 翻译
1