python getattr()函数
目标:
- 获取一个属性的值
- 获取一个方法
描述:
getattr()函数用于返回一个对象属性或方法
语法:
getattr(object, name [, default])
参数:
- object – 对象
- name – 对象属性(字符串)
- default – 默认返回值(可选), 若不提供该参数,报错会显示错误类型AttributeError
实例1:
class Person(object):
def __init__(self):
self.name = 'python'
per = Person() # 定义一个对象
name = getattr(per, 'name') # 获取属性name, 等价于a.name
print(name)
>> python
name2 = getattr(per, 'name2') # 获取属性name2, 不存在该属性, 报错
print(name2)
>> AttributeError(不存在该属性)
name2 = getattr(per, 'name2', 9) # 获取属性name2, 不存在, 但设置了默认值
print(name2)
>> 9 (默认值)
实例2:
class Person(object):
def method(self):
print("hello")
per = Person()
method = getattr(per, 'method') # 获取属性method,等价于 Person.method
print(method)
>> 打印地址
getattr(per, 'method')() # 可以调用该方法,等价于 Person.method()
>> hello
总结:
class A(object):
def __init__(self):
self.name = 'hi name'
def method(self):
print("hi method")
a = A()
print(getattr(a, 'name', default)) # 获取属性name, 情况1:有该属性, 则返回它的值; 情况2:没有该属性,若没有设置默认值则报错, 设置了默认值则返回默认值
>>情况1: hi name
>>情况2: 报错 / 设置的默认值
print(getattr(a, 'method', default)) # 获取属性method, 有该属性则返回一个地址
>> 打印地址
getattr(a, 'method', default) () # 获取属性method, 有该属性调用这个方法
>>hi method
应用场景:
举例:
method = name
if name == 'get':
调用get方法的代码块
elif name == 'post':
调用post方法的代码块
getattr(object, 'method') () # 用于获取多变的属性