日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python描述器做权限控制_Python装饰器14-描述器

發布時間:2023/11/27 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python描述器做权限控制_Python装饰器14-描述器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述器

這是Python一個重要的概念,英文名:Descriptor

descriptor是對象的一個屬性,只不過它存在于類的dict中并且有特殊方法get(可能還有set和__delete)而具有一點特別的功能,為了方便指代這樣的屬性,我們給它起了個名字叫descriptor屬性

雖然如此,還是看起來很難理解

標準的描述器對象定義如下:

class Des:

def __init__(self):

self.value = ''

def __get__(self, instance, owner):

print('returned from des obj')

return self.value

def __set__(self, instance, value):

print('set in des obj')

self.value = value

def __delete__(self, instance):

print('delete in des obj')

del self.value

class Foo:

d = Des()

f = Foo()

f.d = 10

print(f.d)

普通對象、描述器作為類屬性、描述器對象作為類實例屬性

class Des:

def __init__(self):

self.value = ''

def __get__(self, instance, owner):

print('returned from des obj')

return self.value

def __set__(self, instance, value):

print('set in des obj')

self.value = value

def __delete__(self, instance):

print('delete in des obj')

del self.value

class Nor:

def __init__(self):

self.value = 10

class Foo:

d = Des()

n = Nor()

def __init__(self):

self.dd = Des()

f = Foo()

f.d = 10

print(f.d)

# 說明描述器對象必須是類的屬性,不能是實例的屬性

f.dd.value = 20

print(f.dd.value)

# 普通對象的訪問

f.n.value = 30

print(f.n.value)

# 無法通過.直接訪問描述器對象的屬性

print(f.d.value)

運行結果:

set in des obj

returned from des obj

10

20

30

returned from des obj

Traceback (most recent call last):

File "descriptor2.py", line 39, in

print(f.d.value)

AttributeError: 'int' object has no attribute 'value'

小結

關于描述器的講解不止于上述內容,可以繼續參考Python的官方文檔,我們只需要記住以上部分內容,便于后續理解類作為裝飾器。

描述器對象是類的屬性才可以使用get

描述器對實例的賦值和取值都是通過get和set進行,此時類退化為Data Descriptor,也可以理解為這個類只是對一個數據進行描述。

總結

以上是生活随笔為你收集整理的python描述器做权限控制_Python装饰器14-描述器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:python描述器做权限控制_Python装饰器14-描述器