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

2021-10-18 15:35:30 字數 1236 閱讀 2701

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類屬性

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

C 反射機制來獲取類 屬性的描述

namespace demo one 對於位置引數,通常只提供get訪問器 public string recordtype public string author public datetime date 構建乙個屬性,在特性中也叫 命名引數 public string memo set 我們發...

C 反射機制來獲取類 屬性的描述

通過c 反射獲取類和類中屬性的描述資訊 自定義特性 system.serializable system.attributeusage attributetargets.class attributetargets.method,allowmultiple true,inherited false ...