zoukankan      html  css  js  c++  java
  • python反射机制

    一、反射机制简介:

      通过字符串的形式导入模块

      通过字符串的形式,去模块中寻找指定的函数,并执行

      规定用户输入格式 模块名/函数名 通过__import__的形式导入模块,并通过 hasattr和getattr 检查并获取函数返回值。

      相关方法:
        getattr:--根据字符串的形式去某个模块中寻找东西
        hasattr:--根据字符串的形式去某个模块中判断东西是否存在
        setattr:--根据字符串的形式去某个模块中设置东西
        delattr:--根据字符串的形式去某个模块中删除东西

    二、反射机制初识:

    test.py

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

    def f1():
      return '我是F1,我被调用了'

    def f2():
      return '我是F2,我被调用了'

    def f3():
      return '我是F3,我被调用了'

    index.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    """
    反射机制
    1.根据字符串的形式导入模块。
    2.根据字符串的形式去对象(某个模块)中操作其成员 
    实现思路:规定用户输入格式 模块名/函数名 通过__import__的形式导入模块,并通过 hasattr和getattr 检查并获取函数返回值。
    """
    #通过用户输入的形式, 导入模块
    inp = input('请输入需要导入的模块名:')
    #__import__用于以字符串的形式导入模块
    dd = __import__(inp)
    #在模块寻找函数并执行函数
    inp_func = input('请输入需要执行的函数:')
    #getattr()用于以字符串的形式去某个模块中寻找函数
    tager_func = getattr(dd, inp_func)
    #在获取到的函数名后加()表示执行函数
    result = tager_func()
    print(result)、

    代码执行结果:

    请输入需要导入的模块名:test
    请输入需要执行的函数:f2
    我是F2,我被调用了

     

    回忆滋润坚持
  • 相关阅读:
    .net com
    Json树递归Js查询Json父子节点
    Angular中使用$watch监听object属性值的变化
    教程
    JS格式化Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)
    js中获取时间new Date()详细介绍
    select默认空白问题。。
    angular先加载页面再执行事件,特别在动态生成id,然后做echarts等图表
    详解angularJs中自定义directive的数据交互
    Angularjs ng-table的使用(可以加button)以及angularjs学习资料
  • 原文地址:https://www.cnblogs.com/james5d/p/14191299.html
Copyright © 2011-2022 走看看