1.getattr/hasattr/setattr/delattr操作对象中的成员
1 class Foo: 2 def __init__(self,name,age): 3 self.name = name 4 self.age = age 5 def show(self): 6 return '%s-%s' %(self.name,self.age) 7 obj = Foo('alex',18)
(1)getattr
1 s = getattr(obj,'name') #用getattr以字符串方式从obj对象里获取字段成员 2 print(s) 3 4 func = getattr(obj,'show') #用getattr以字符串方式从obj对象里获取方法成员 5 print(func) 6 r = func() #执行获取到的方法 7 print(r)
(2)hasattr
t = hasattr(obj,'name') #hasattr判断对象里是否有指定成员 print(t)
(3)setattr
setattr(obj,'gender','men') #setattr设置对象成员 print(obj.gender)
(4)delattr
delattr(obj,'name') #delattr删除对象成员
2.从类里拿成员--类也是对象
1 class Foo: 2 stat = '887' 3 def __init__(self,name,age): 4 self.name = name 5 self.age = age 6 g = getattr(Foo,'stat') 7 print(g)
3.从模块里拿东西--模块也是一个对象
1 import test 2 t = getattr(test,'name') #从模块里拿到一个变量 3 print(t) 4 cls = getattr(test,'Foo') #从模块里拿到一个类 5 print(cls) 6 obj = cls() 7 print(obj.name)