getattr、setattr、hasattr都是python的内置函数。
getattr(obj,key)—— 获取类或类实例中的属性值,没有则会报错!!!
setattr(obj,key,value) —— 给类设置属性值!!!
hasattr(obj,key) —— 检查类或者类实例是否有这个属性
参数:
obj:对象
key:对象中的属性
value:对象属性值
getattr
1、获取实例对像中的实例属性
class Person(object):
def __init__(self,name):
self.name = name
p = Person('lxc')
r = getattr(p,'name')
print(r) # lxc
2、获取类中的类属性
class Person(object):
name = '吕星辰'
def __init__(self):
pass
p = Person()
r = getattr(p,'name')
print(r) # 吕星辰
setattr
1、动态设置类属性
下边代码,定义了一个类属性name,然后动态添加了一个类属性,打印实例属性是动态添加的属性值instanceName,动态添加的类属性会覆盖原有的类属性!!!
class Person(object):
name= 'className'
def __init__(self):
pass
@classmethod
def c(cls):
print(cls.name) #instanceName
p = Person()
setattr(Person,'name','instanceName')
p.c()
hasattr
检查类中是否有这个类属性或者类方法:
class Person():
def fn(self):
pass
P = Person()
print(hasattr(Person,'fn')) # True
class Person():
name = 'lxc'
P = Person()
print(hasattr(Person,'name')) # True