函數原型:
getattr(object, name[, default])
name:str類型
default:如果不存在name屬性,設置default則返回default,不設置返回AttributeError.
class A: name = "A" def get_name(self): print(self.name)
#這里的成員變量和成員函數都被稱為屬性 a = A() na = getattr(a, "name") #輸出:A 獲得name屬性 print(na) fun = getattr(a, "get_name") #輸出:<bound method A.get_name of <__main__.A object at 0x0000000000A7A0F0>> 獲得函數屬性 print(fun)
getattr(a, 'bar2', 3) # 屬性 bar2 不存在,但設置了默認值
與__getattr__的區別:
- __getattr__是類的內置方法,當找不到某個屬性時會調用該方法;找到就不會調用.
- getattr與類無關.
- 一個例子:作為data的代理類,可以以這種方式來使用data的屬性.
-
class DataProxy(...): def __getattr__(self, item): return getattr(self.data, item)