码迷,mamicode.com
首页 > 编程语言 > 详细

python_反射_根据用户输入字符串操作模块和模块的成员

时间:2019-10-20 21:39:13      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:没有   list   添加   删除   NPU   split   成员   lse   commons   

调用的模块: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()  根据字符串寻找方法

 

python_反射_根据用户输入字符串操作模块和模块的成员

标签:没有   list   添加   删除   NPU   split   成员   lse   commons   

原文地址:https://www.cnblogs.com/wangdianchao/p/11710035.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!