引入模块,获取该模块成员,如果是变量则打印变量,如果是函数则执行函数
hasattr(module, member):判断module模块中是否包含member成员
getattr(module, member):获取module模块中的member成员
setattr(module, member, value):在module模块中设置member成员并将赋值为value(value可为函数)
delattr(module, member):删除module模块中的member成员
isinstance(func, FuncionType):判断func是否是一个函数,FunctionType需要引入该模块
模块my_module文件代码:
1 2 3 4 5 6 7 8 9 10
| name = 'Tony' city = '中国 - 上海' def run(): return '跑的好快啊!!!'
def work(): return '工作好累啊!!!'
def play(): return '玩的开心啊!!!'
|
引入模块代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import my_moudle as m from types import FunctionType while 1: handle = input('请输入您要的操作:') if(hasattr(m, handle)): member = getattr(m, handle)
if isinstance(member, FunctionType): print(member()) else: print(member) else: print('没有您要的操作') break
|
面向对象反射实例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Obj: name = '托尼' def func(self): print('成员方法')
v1 = getattr(Obj, 'name') print(v1) v2 = getattr(Obj, 'func') v2(self)
o = Obj() v3 = getattr(o, 'name') print(v3) v4 = getattr(o, 'func') v4()
|