python 描述 描述Python類屬性

2021-10-22 11:19:52 字數 1164 閱讀 7606

def __init__(self, name, info):

self.name = name

self.info = info

ls = user("李四",)print(ls.info)執行結果:

如果想獲得male屬性,則需要用到__getattr__魔法方法。class user(object):

def __init__(self, name, info):

self.name = name

self.info = info def __getattr__(self, item):

return self.info[item]ls = user("李四",)print(ls.gender)執行結果:

male屬性描述符是乙個強大的通用協議。它是properties, methods, static methods, class methods

和super()的呼叫原理。

屬性描述符是實現了特定協議的類,只要實現了__get__,__set__和__delete__三個方法中的任意乙個,這個類就是描述符,它能實現對多個屬性運用相同訪問邏輯的一種方式,通俗來說就是:建立乙個例項,作為另乙個類的類屬性。

如果乙個物件同時定義了__get__和__set__方法,它被稱做資料描述符(data descriptor)。

只定義__get__方法的物件則被稱為非資料描述符(non-data descriptor)。

使用類方法建立描述符 • 定義乙個intfield類為描述符類 • 建立intfield類的例項,作為另乙個user類的屬性class user:

def __init__(self, age):

self.age = age def get_age(self):

return (str(self.age) + '歲')

def set_age(self, age):

if not isinstance(age, int):

raise typeerror('type error')

self.age = age

tt=user(55)tt.set_age(60)print(tt.get_age())執行結果:60歲描述符查詢順序 • 當為資料描述符時, get__優先順序高於__dict •

當為非資料描述符時,dict__優先順序高於__get

python 描述 python描述符

在python中,訪問乙個屬性的優先順序順序按照如下順序 1.類屬性2.資料描述符3.例項屬性4.非資料描述符5.getattr 方法。描述符,用一句話來說,就是將某種特殊型別的類的例項指派給另乙個類的屬性 注意 這裡是類屬性,而不是物件屬性 而這種特殊型別的類就是實現了 get set delet...

python描述器 python描述器

首先介紹一下裝飾器,所謂裝飾器,就是接受乙個函式作為引數,然後返回乙個函式的函式。所謂帶引數的裝飾器呢?其實是返回裝飾器的函式。注意啦!python的裝飾器語法是乙個語法糖,實際上並不強制要求你的裝飾器返回函式!你的裝飾器完全返回隨便什麼東西!int float bool str等基本型別,list...

python類屬性描述 描述Python類屬性

ls user 李四 print ls.info 執行結果 如果想獲得male屬性,則需要用到 getattr 魔法方法。class user object def init self,name,info self.name name self.info info def getattr self,...