麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python描述器descriptor詳解

2020-02-23 06:21:29
字體:
來源:轉載
供稿:網友

前面說了descriptor,這個東西其實和Java的setter,getter有點像。但這個descriptor和上文中我們開始提到的函數方法這些東西有什么關系呢?

所有的函數都可以是descriptor,因為它有__get__方法。

代碼如下:
>>> def hello(): 
    pass 
>>> dir(hello) 
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '<span style="color: #ff0000;">__get__</span> 
', '__getattribute__',  
'__hash__', '__init__', '__module__', '__name__', '__new__',  
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure',  
'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] 
>>>  

 注意,函數對象沒有__set__和__del__方法,所以它是個non-data descriptor.

方法其實也是函數,如下:

代碼如下:
>>> class T(object): 
    def hello(self): 
        pass 
>>> T.__dict__['hello'] 
<function hello at 0x00CD7EB0> 
>>> 

 或者,我們可以把方法看成特殊的函數,只是它們存在于類 中,獲取函數屬性時,返回的不是函數本身(比如上面的<function hello at 0x00CD7EB0>),而是返回函數的__get__方法的返回值,接著上面類T的定義:

>>> T.hello   獲取T的hello屬性,根據查找策略,從T的__dict__中找到了,找到的是<function hello at 0x00CD7EB0>,但不會直接返回<function hello at 0x00CD7EB0>,因為它有__get__方法,所以返回的是調用它的__get__(None, T)的結果:一個unbound方法。

<unbound method T.hello>
>>> f = T.__dict__['hello']   #直接從T的__dict__中獲取hello,不會執行查找策略,直接返回了<function hello at 0x00CD7EB0>

代碼如下:
>>> f
<function hello at 0x00CD7EB0>
>>> t = T()                
>>> t.hello                     #從實例獲取屬性,返回的是調用<function hello at 0x00CD7EB0>的__get__(t, T)的結果:一個bound方法。

代碼如下:
<bound method T.hello of <__main__.T object at 0x00CDAD10>>
>>>

 為了證實我們上面的說法,在繼續下面的代碼(f還是上面的<function hello at 0x00CD7EB0>):

代碼如下:
>>> f.__get__(None, T) 
<unbound method T.hello> 
>>> f.__get__(t, T) 
<bound method T.hello of <__main__.T object at 0x00CDAD10>> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一边吃奶一边摸下娇喘 | 成人短视频在线观看免费 | 插插操| 爱福利视频网 | 日韩一级免费毛片 | 中国精品久久 | 91精品视频免费 | 国产一区二区三区四区在线 | 羞羞答答视频 | 一级大片一级一大片 | 亚洲国产精品久久久久婷婷老年 | 日韩毛片一区二区三区 | 成人做爰高潮片免费视频韩国 | 精国产品一区二区三区四季综 | 国产精品看片 | 久久久成人999亚洲区美女 | 成人毛片免费看 | 老师你怎么会在这第2季出现 | 日本aaaa片毛片免费观看视频 | 72pao成人国产永久免费视频 | 成人免费观看49www在线观看 | 一区二区国产在线 | 青草久久av| 国产精品成人久久 | 日本黄色免费播放 | 久久国产一级 | 久草手机在线观看视频 | 欧美黄色大片免费观看 | 亚洲国产一区二区三区 | 精品av在线播放 | 中国杭州少妇xxxx做受 | 欧美18一12sex性处hd | 精品一区二区久久久 | h视频在线观看免费 | 一本免费视频 | 手机黄色小视频 | 黄色大片大毛片 | 精品国内视频 | 日韩精品dvd | 国产亚洲精久久久久久蜜臀 | 国产成人综合在线观看 |