码迷,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
迷上了代码!