反射

1.反射的基本函数

python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

class Foo(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def talk(self):
        print 'i am alex%s'%self.name

obj=Foo('alex',18)
print Foo.__dict__
# #### 检查是否含有成员 ####
print hasattr(obj,'name')
print hasattr(obj,'talk')
print hasattr(obj,'aaa')
# #### 获取成员 ####
func=getattr(obj,'talk')
func()
print getattr(obj,'name')
#以下不常用
# #### 设置成员 ####
setattr(obj, 'age', 18)
setattr(obj, 'show', lambda num: num + 1)
# #### 删除成员 ####
delattr(obj, 'name')
delattr(obj, 'func')

2.动态加载模块,并获取方法

index文件

#!/usr/bin/env python
#-*- coding:utf-8 -*-

control,action=raw_input('请输入需要执行的函数:').split('/')

#动态加载模块
modules=__import__(control)
#判断需要加载的方法是否存在
if hasattr(modules,action):
    #获取方法
    func=getattr(modules,action)
    #执行方法
    print func()
else:
    #方法不存在,返回404错误
    print '404 error'

home文件

#!/usr/bin/env python
#-*- coding:utf-8 -*-

def func1():
    return 'this is func1'

def func2():
    return 'this is func2'

def func3():
    return 'this is func3'
原文地址:https://www.cnblogs.com/yanhongjun/p/5297419.html