Python学习系列之反射
2016-12-11 16:26
405 查看
反射的定义
根据字符串的形式去某个对象中操作成员根据字符串的形式去某个对象中寻找成员
根据字符串的形式去某个对象中设置成员
根据字符串的形式去某个对象中删除成员
根据字符串的形式去某个对象中判断成员是否存在
反射相关函数
getattr(object,name,[default])获取一个对象的属性或者方法,如果存在就打印出来,如果不存在就打印出默认值,默认值是可选的
注意:返回的对象方法,返回的是内存地址,如果需要执行这个方法,需要在后面加上括号'()'
>>> class test(): ... name="xiaohua" ... def run(self): ... return "HelloWord" ... >>> t=test() #实例化这个类 >>> getattr(t, "name") #获取name属性,存在就打印出来。 'xiaohua' >>> getattr(t, "run") #获取run方法,存在就打印出方法的内存地址。 <bound method test.run of <__main__.test instance at 0x0269C878>> >>> func = getattr(t, "run") #获取run方法,加个括号就可以执行这个方法 >>> func() 'HelloWord' >>> getattr(t, "age") #获取一个不存在的属性,就报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: test instance has no attribute 'age' >>> getattr(t, "age","18") #若属性不存在,返回一个默认值。 '18'
setattr(object,name,value)
给对象的属性赋值,若属性不存在,就先创建在赋值
1 >>> class test(): 2 ... name="xiaohua" 3 ... def run(self): 4 ... return "HelloWord" 5 ... 6 >>> t=test() 7 >>> hasattr(t, "age") #判断属性是否存在 8 False 9 >>> setattr(t, "age", "18") #为属相赋值,并没有返回值 10 >>> hasattr(t, "age") #属性存在了 11 True 12 >>>
delattr(object,name)
根据字符串的形式去某个对象中删除成员
>>> getattr(commons, "Name") 'ZhaiJunMing' >>> delattr(commons, "Name") # 获取不到就报错 >>> getattr(commons, "Name") Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'commons' has no attribute 'Name'
hasattr(object,name)
根据字符串的形式去某个对象中判断成员是否存在
比如:判断一个对象里面是否有name属性或者name方法,返回bool值,有则True,否则False
1 >>> class test(): 2 ... name="xiaohua" 3 ... def run(self): 4 ... return "HelloWord" 5 ... 6 >>> t=test() 7 >>> hasattr(t, "name") #判断对象有name属性 8 True 9 >>> hasattr(t, "run") #判断对象有run方法 10 True 11 >>>
相关文章推荐
- Python学习系列之Module
- Python学习系列之异常和文件操作
- Python学习基本系列笔记(一)
- python系列学习四——定制数据对象
- python系列学习三 —— 数据处理
- python学习系列之一
- python系列学习七——使用sqlite管理数据
- 初识python 学习笔记系列1
- python学习系列一:python快速入门
- python系列学习六——移动开发
- 反射学习系列-特性(Attribute)
- python库的学习系列之 10. File and Directory Access
- python库的学习系列之 5.6.1. String Methods
- 初识python 学习笔记系列1
- python学习系列之OS模块介绍
- Python学习系列之Object and Object-Orientation
- C#基础学习系列之:反射
- python库的学习系列之 13.2. ConfigParser — Configuration file parser
- python系列学习一 —— 列表
- python系列学习——移动开发