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

 

posted @ 2017-08-20 22:34  嘟囔囔小孩  阅读(112)  评论(0)    收藏  举报