python 反射笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 反射笔记相关的知识,希望对你有一定的参考价值。
反射:是指以字符串的形式传入要执行的对象或者要获取的信息
以下以代码的执行步骤来演示:
创建一个包:
test:
——__init__
——fanshe.py
——main.py
fanshe.py
GB = ‘这是全局变量‘ def func1(): return ‘这是反射函数func1的结果‘ def func2(): return ‘这是反射函数func2的结果‘ def func3(): return ‘这是反射函数func3的结果‘
main.py
# #不算正真的反射 DO = __import__("fanshe") print DO.GB #如何DO.xxxx错了的话就报错 DO.func1() #执行func1函数 #第一种:导入模块的反射 import fanshe A = getattr(fanshe,‘GB‘) #getattr获取fanshe模块的‘GB‘对象 print A B = getattr(fanshe,"func1",None) #getattr获取fanshe模块的‘func1‘函数对象,None值是当fanshe模块中不存在字符串中指定的函数时,不报错 print B() setattr(fanshe,‘GB‘,‘哈哈‘) print fanshe.GB print hasattr(fanshe,"GB") #hasattr判断在模块或者类对象内是否含有某字符串对象,有则返回True,无则返回False #第二种:定义类的反射 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name=‘MR.milk‘): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.sayHi访问 print self.name, ‘says Hi!‘ # 访问名为name的字段,使用实例.name访问 cat = Cat() print cat.name print hasattr(cat,‘name‘) #hasattr判断在模块或者类对象内是否含有某字符串对象,有则返回True,无则返回False func = getattr(cat,"sayHi",None) #getattr获取模块对象或者类对象的字符串函数,并赋值func对象 func() #加()执行func对象 setattr(cat,"name",‘MK‘) #setattr设置(无则添加)模块对象(或类对象)的某函数(字符串形式)的值 print cat.name setattr(cat,‘count‘,lambda x:x+1)#setattr则添加count函数到cat模块对象(或类对象) r = getattr(cat,‘count‘) print r(2)
本文出自 “MK_linux” 博客,请务必保留此出处http://wengmengkai.blog.51cto.com/9016647/1791180
以上是关于python 反射笔记的主要内容,如果未能解决你的问题,请参考以下文章