python的getattr()

函数原型:

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)
posted @ 2019-01-18 20:31  心媛意码  阅读(4648)  评论(1编辑  收藏  举报