Skip to content

Commit

Permalink
Merge pull request MrKiven#14 from kidlj/patch-1
Browse files Browse the repository at this point in the history
Update Descriptor-HOW-TO-Guide.rst
  • Loading branch information
hit9 committed Dec 2, 2014
2 parents 90a853d + 052ae89 commit 0906c68
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions docs/Descriptor-HOW-TO-Guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ Python描述器引导(翻译)
定义和介绍
----------

一般来说,一个描述器是一个有“绑定行为”的对象属性,它的访问控制被描述器协议方法重写。这些方法是 :meth:`__get__`, :meth:`__set__`, 和 :meth:`__delete__` 。有这些方法的对象叫做描述器。
一般来说,一个描述器是一个有“绑定行为”的对象属性(object attribute),它的访问控制被描述器协议方法重写。这些方法是 :meth:`__get__`, :meth:`__set__`, 和 :meth:`__delete__` 。有这些方法的对象叫做描述器。

默认对属性的访问控制是从对象的字典里面(__dict__)中获取(get), 设置(set)和删除(delete)它。对于实例 ``a`` 来说, ``a.x`` 的查找顺序是, ``a.__dict__['x']`` , 然后 ``type(a).__dict__['x']`` , 然后找 ``type(a)`` 的父类(不包括元类(metaclass)).如果查找到的值是一个描述器, Python就会调用描述器的方法来重写默认的控制行为。这个重写发生在这个查找环节的哪里取决于定义了哪个描述器方法。注意, 只有在新式类中时描述器才会起作用。(新式类是继承自 ``type`` 或者 ``object`` 的类)
默认对属性的访问控制是从对象的字典里面(__dict__)中获取(get), 设置(set)和删除(delete)它。举例来说, ``a.x`` 的查找顺序是, ``a.__dict__['x']`` , 然后 ``type(a).__dict__['x']`` , 然后找 ``type(a)`` 的父类(不包括元类(metaclass)).如果查找到的值是一个描述器, Python就会调用描述器的方法来重写默认的控制行为。这个重写发生在这个查找环节的哪里取决于定义了哪个描述器方法。注意, 只有在新式类中时描述器才会起作用。(新式类是继承自 ``type`` 或者 ``object`` 的类)

描述器是强大的,应用广泛的。描述器正是属性, 实例方法, 静态方法, 类方法和 ``super`` 的背后的实现机制。描述器在Python自身中广泛使用,以实现Python 2.2中引入的新式类。描述器简化了底层的C代码,并为Python的日常编程提供了一套灵活的新工具。

Expand Down

0 comments on commit 0906c68

Please sign in to comment.