调用的模块:lib文件夹下面的commons.py
def f1(): print(‘函数1‘) def f2(): print(‘函数2‘) def f3(): print(‘函数3‘)
反射:根据用户输入字符导入模块并调用模块中的方法
import os yhf = ‘lib‘ def wdc(): inp = input(‘请输入(模块名/方法名):‘) # 将输入的字符串根据‘/’分割,并分别赋值给m和f try: m,f = inp.split(‘/‘) # 检测是要导入的模块是否存在 if os.path.exists(yhf + ‘/‘ + m + ‘.py‘): # 根据字符串导入模块,若导入文件夹下面的模块,需要后面添加fromlist=True obj = __import__(yhf + ‘.‘ + m, fromlist=True) # 检测模块中是否存在成员(模块,成员名),返回 T/F if hasattr(obj, f): # 根据字符串的形式去对象(模块)中寻找成员。返回成员名 func = getattr(obj, f) # (模块,用户输入的字符串) # 执行方法 func() else: # 当方法名输入错误时 print(‘没有找到该方法!‘) else: print(‘不存在此模块!‘) except Exception: print(‘输入可是不正确!‘) wdc()
执行结果:
四个方法:
delattr() 根据字符串删除方法
setattr() 根据字符串创建方法
hasattr() 根据字符串检测方法是否存在
getattr() 根据字符串寻找方法
原文地址:https://www.cnblogs.com/wangdianchao/p/11710035.html
时间: 2024-11-06 09:31:12