函数原型:
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)