python getattr的美妙生活

2021-09-17 02:42:28 字數 1794 閱讀 8035

一句話簡介:拿到物件是的該屬性

class test:

age = 10

def __init__(self):

self.name = 'donald'

@staticmethod

def ***():

return 'man'

print(getattr(test, 'age'))

print(getattr(test, '***')())

-----

10man

a = {}

a['hello'] = 'world'

print(getattr(a, 'hello'))

-----

traceback (most recent call last):

file "", line 1, in attributeerror: 'dict' object has no attribute 'hello'

print(dir(a))

-----

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

****

print(getattr(a, '__str__'))

print(getattr(a, '__str__')())

-----

__getattr__方法
class test:

age = 10

def __init__(self):

self.name = 'donald'

@staticmethod

def ***():

print('in ***')

return 'man'

def __str__(self):

print('in str')

return str(self.name)

def __getattr__(self, item):

return f',沒有這個屬性,訪問錯誤'

if __name__ == '__main__':

p = test()

print(p.age)

print(p)

print(p.***())

print(p.sss)

-----

10in str

donald

in ***

mansss,沒有這個屬性,訪問錯誤

-3、在訪問例項sss的時候,因為在例項物件和類的__dict__都找到不到,所以會呼叫該函式

Python getattr 函式的介紹

getattr 函式用於返回乙個物件屬性值。getattr 語法 getattr object,name default 返回物件屬性值。以下例項展示了 getattr 的使用方法 class a object bar 1 a a getattr a,bar 獲取屬性 bar 值 1 getattr...

《程式設計之美》背後的作者之美

中文站總編輯 霍泰穩收到 程式設計之美 這本書的時候,我是悲喜交集的。喜的是可以從中了解一下微軟是如何做面試的,和其他的軟體公司有什麼區別,這可能是我長期從事編輯的毛病,遇事總愛比較一番 悲的是我發現上面的絕大多數面試題目我都看不懂,更悲的是我還是乙個計算機科班出身的人,看來今後再也不能隨便給別人吹...

北方的冬天 美

隨著秋天的腳步漸漸遠去.冬的腳步輕輕的來臨了,冬它不像春柔美 夏的火辣 秋的蕭肅。冬用自己的特色,展示著它的美 如果說綠意是人們吟誦亙古不變的主題,那麼冷峻的冬,更有它絕佳的魅力和偉岸。尤其是北方的冬天,敞開它那寬大的胸襟,迎接那呼嘯的西北風的洗禮,寬闊的大地竟不起一塵沙粒,這是我們北方人特有的不屈...