09 2017 档案
摘要:1 Iterator Protocol - Python 描述符协议 2 3 先看几个有关概念, 4 iterator 迭代器, 5 一个实现了无参数的 __next__ 方法, 并返回 '序列'中下一个元素,在没有更多的元素可返回的时候 raises StopIteration 的对象, 6 被称为 iterator(迭代器)....
阅读全文
摘要:1 特性 property 都是类属性(静态变量),但是特性管理的其实是实例属性的存取, 2 ****** 回顾 -'类方法' classmethod 和 '静态方法' staticmethod 皆可以访问类的静态变量(类变量),但不能访问实例变量(即类方法中定义的变量) 3 4 示例1 - 实例属性'覆盖'同名类属性(attri...
阅读全文
摘要:1 Property - Python 特性 2 不同的书籍对 property 一词的翻译有所不同, 我们将 property 翻译成 '特性' 以区别于 attribute 一词. 3 先看看 property 类在 Python 中的定义, 4 结构, 5 class property(object): 6 ...
阅读全文
摘要:描述符用法建议, 内置的 property 类创建的是'覆盖型'(date descriptor), 实现了 __set__ 和 __get__. 特性 property 的 __set__ 方法 默认会抛出 'AttributeError: can not set attribute', 也就是说使用 property 是创建'只读'属性的一...
阅读全文
摘要:1 描述符(descriptor) 2 descriptor 是一个实现了 __get__、 __set__ 和 __delete__ 特殊方法中的一个或多个的. 3 4 与 descriptor 有关的几个名词解释, 5 描述符类(descriptor class) 6 实现描述符协议的类,被称作'描述符类...
阅读全文
摘要:The Zen of Python -- by Tim Peters Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than
阅读全文
摘要:1 classmethod and staticmethod 2 classmethod 的是一个参数是类对象 cls (本类,或者子类), 而不是实例对象 instance (普通方法). classmethod 即可以通过'类'调用 - cls.classfunc(), 3 也可以同通过实例调用('The instance is ignored except for i...
阅读全文
摘要:1 Private Variable and Private Method 2 Python 不象 Java 那样, 通过 private 关键字创建私有属性, python 通过更简洁的实现了'私有属性', 从而避免了子类意外覆盖私有属性. 3 举个例子来说, 现在编写一下儿名字叫 Robot 的类,并实现了一个名字为 fighting 的属性。 4 接着又人编写...
阅读全文
摘要:1 装饰器 Decorator, 2 3 先来看看对 decorator 这个名词的解释, 4 一个可调用的对象 A (decorator), 返回另一个可调用的对象 B, 在可调用的对象 C 的定义体之前通过语法 @A 调用. 5 Python 的解释器会调用 A(C), 把 C 的定义提替换成 B 并返回(return). 6 ...
阅读全文
摘要:1 PyObject, PyTypeObject - Python 中的 '对象' 们 2 3 '一切皆对象' - 这是 Python 的学习和使用者们最最常听到一句, 可谓 博大精深 - '勃大精深'. 4 '对象(Object)' 是 Python 最核心的一个概念, 在 Python 中 '一切皆是对象'. 5 整数,字符串,类型type(...
阅读全文
摘要:1 Local 一个函数定义了一个 local 作用域; PyFrameObject 中的 f_local 属性 2 Global 一个 module 定义了一个 global 作用域; PyFrameObject 中的 f_global 属性. 3 BuiltIn open, dir 的作用域等等, pyt...
阅读全文
摘要:命名空间 命名空间 namespace 对 python 来说是一个非常核心的概念,整个 python 虚拟机运行的机制与 namespace 概念有这非常紧密的联系. 从'赋值'说起, python 中的赋值语句是一类特殊的语句,原因是因为它们会影响 namespace. python 中的赋值语句首先创建一个 对象 object,然后将 obj '赋值' 给一个名字 ...
阅读全文
摘要:Method Resolve Order (MRO) - 类对象属性的解析顺序 Python 支持多重继承, 此时就需要解决按照何种顺序来解析属性的问题.类的继承关系在一个特殊的类属性中指定(__mro__).这个属性的作用是按照序列出类及其超类, python 会按照这个顺利搜索方法。任何实现了多
阅读全文
摘要:Source Code Structure - Python 源码目录结构 Include 目录包含了 Python 提供的所有头文件, 如果用户需要用 C 或 C++ 编写自定义模块扩展 Python, 那么就需要用到这里提供的头文件。 Lib 目录包含了 Python 自带的所有标准库, 其中的
阅读全文
摘要:Bound Method and Unbound Method 通常有两种方法对类的方法(instance.method)/属性(class.attribute)进行引用, 一种称做 Bound Method, 即通过类的类的实例对象进行引用(instance.foo)。引用区别于调用, 引用为 instance.foo 返回的是方法对象 (PyFunctionObject/P...
阅读全文
摘要:__add__ +、 __sub__ -、 __mul__ *、 __truediv__ /、 __floordiv__ //、 __mod__ %、 __divmod__ divmod()、 __pow__ ** 或pow()、 __round__ round()
阅读全文

浙公网安备 33010602011771号