python面向对象之----反射
1.什么是反射。
python面向对象中的反射--> 通过字符串的形式操作对象相关的属性。
2.具体用法
class Foo: x=1 def __init__(self,name): self.name=name def f1(self): print('from f1') f=Foo('yxwang') #要获取类中的属性有两种方式#1:直接打印该属性。print(f.name) #2:通过类自带的__dict__方法,以字典的形式取值。这种直接是以字符串的形式访问属性值得方式,就是反射。print(f.__dict__['name']) #上述第二种以字符串的形式取值的方法较为繁琐,python提供了以下方法: #直接使用字符串的形式访问属性。 # #hasattr 判断是否有这个属性。 print(hasattr(f,'name')) #等同于f.name print(hasattr(f,'f1')) #等同于f.f1 print(hasattr(f,'x')) #等同于f.x #setattr 增就和修改 属性 setattr(f,'age',18) #等同于f.age=18 #getattr 查找属性 print(getattr(f,'name')) #等同于f.name print(getattr(f,'abc',None)) #等同于f.abc 如果没有就会报错,所以可以定义一个返回值,如果没有就范围设置的返回值 #delattr 删除属性 delattr(f,'name') # 等同于del f.name

浙公网安备 33010602011771号