Tim*_*Tim -1 python oop python-3.x
Python 从何处借用了描述符的概念?
Python是否从其他编程语言借来的?在C#中,我只看到属性,但看不到描述符。
通过首先学习其他语言而不是直接学习Python,我不仅会受益于描述符,还会受益于其他概念吗?
来自Python本身。为了引用Guido Van Rossum 1,在Python 2.2中引入了描述符,作为对绑定方法概念的概括,这对于以前版本中经典类的实现至关重要。
一种语言支持功能和面向对象的编程有两种常见的方法。每个可调用对象都是一个方法,而函数仅仅是隐藏类的方法,这是Ruby所采用的方法;或每个可调用对象都是一个函数,而对象方法只是具有隐式或显式参数的函数,该函数接收调用该方法的对象,这是Python所采用的方法。
在Python 2.1及更高版本中,当实例属性在实例字典中查找失败时,解释器将递归地查看类和基类。如果在类字典中找到该属性并且它是一个函数,则解释器将其包装在可调用对象中,该对象在调用实例时将实例本身作为第一个参数插入。包装器将实例绑定到函数,因此将名称绑定到方法。
描述符是对该行为的概括。在Python 2.2及更高版本中,解释器以相同的方式执行属性查找,当在类字典中找到该属性并且它具有一个__get__方法时,该方法将以类和实例作为参数来调用,并且返回的任何内容都会被返回。用作属性搜索的结果。绑定方法包装器不再是一个特殊的对象,而是一个实现__get__方法的普通对象,允许我们对其进行自定义并实现诸如classmethod和的特殊方法staticmethod。最重要的是,我们有互补的方法__set__和__delete__,概括了相同的行为以进行分配和删除,从而使我们能够实现property各种属性和托管属性。
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |