摘要:
十二、继承的优缺点 子类化内置类型很麻烦 内置类型(使用 C 语言编写)不会调用用户定义的类覆盖的特殊方法。 至于内置类型的子类覆盖的方法会不会隐式调用,CPython 没有制定官方规则。基本上,内置类型的方法不会调用子类覆盖的方法。例如,dict 的子类覆盖的 __getitem__() 方法不会 阅读全文
摘要:
十、序列的修改、散列和切片 不要检查它是不是鸭子、它的叫声像不像鸭子、它的走路姿势像不像鸭子,等等。具体检查什么取决于你想使用语言的哪些行为。(comp.lang.python,2000 年 7月 26 日) ——Alex Martelli 多维向量 In [20]: from array impo 阅读全文
摘要:
八、对象引用、可变性和垃圾回收 每个变量都有标识、类型和值。对象一旦创建,它的标识绝不会变;可以把标识理解为对象在内存中的地址。is运算符比较两个对象的标识;id() 函数返回对象标识的整数表示。 每个 Python 对象都有标识、类型和值。只有对象的值会不时变化。 作者:其实,对象的类型也可以变, 阅读全文
摘要:
九、符合 python 风格的对象 绝对不要使用两个前导下划线,这是很烦人的自私行为。 ——Ian Bicking pip、virtualenv 和 Paste 等项目的创建者 得益于 python 数据模型,自定义类型的行为可以像内置类型那样自然。实现如此自然的行为,靠的不是继承,而是鸭子 阅读全文
摘要:
七、函数装饰器和闭包 nonlocal @decorate def target(): print('running target()') 等同于 def target(): print('running target()') target = decorate(target) 综上,装饰器的一大特 阅读全文
摘要:
六、使用一等函数实现设计模式 符合模式并不表示做得对。 ——Ralph Johnson 经典的《设计模式:可复用面向对象软件的基础》的作者之一 策略模式 订单 order 折扣策略,比如有三种 Promotion是策略基类,下面三个是具体实现的折扣策略 上下文 把一些计算委托给实现不同算法的可互 阅读全文
摘要:
from c import c 与 from a.c import c 虽然都是同一个c(a加入环境变量),因为导入方式不同,模块代码会执行两次,导致得到的 c 不是同一个 对象,地址是完全不同的。 所以,单例模式,要注意统一导包方式。 阅读全文
摘要:
更换dll 为 适合python的位数,64位或32位,别跟我说别的! 阅读全文