python 动态调用函数实例解析


Posted in Python onOctober 21, 2019

1. 根据字符串名称 动态调用 python文件内的方法eval("function_name")(参数)

2. 根据字符串 动态调用类中的静态方法,getattr(ClassName,"function_name")(参数)

3. apply(functoin_name,parameters) 这个function_name不是字符串,而是函数对象本身;parameters是参数,类似(a,b,...)这样的格式

4. 当函数不确定参数的数目时候,采用 一个 * 或两个** 他们的用法是有讲究的。

下面的例子是,定义了一个函数列表字典,字典中保存有函数对象和函数的参数,可以实现动态为字典添加执行的函数,最后一起执行

from collections import OrderedDict
 
class ComponentCheck:
  def __init__(self, data_dir):
    self.data_dir = data_dir
 
    self._extend_function_dic = OrderedDict({})
 
  def add_extend_function(self, function_name, *parameters):
    self._extend_function_dic[function_name] = parameters
 
  def _check_extend_function(self):
    for function_name, parameters in self._extend_function_dic.iteritems():
      if not apply(function_name, parameters):
        return False
    return True
 
class CheckFunctions:
  def __init__(self):
    pass
 
  def tollcost_check(data_path):
    toll_cost_path = os.path.join(data_path, Importer.DT_KOR_TOLL_COST)
    tollcost_component = ComponentCheck(toll_cost_path)
    tollcost_component.add_extend_function(tollcost_component.check_file_pattern_list_match, CheckFunctions.TOLL_COST_FILENAME_PATTERN)
    return tollcost_component
@staticmethod
  def speed_camera_check(data_path):
    speed_camera_path = os.path.join(data_path, Importer.DT_SAFETY_CAMERA)
    speed_camera_component = ComponentCheck(speed_camera_path)
    speed_camera_component.add_extend_function(speed_camera_component.check_not_exist_empty_directory)
    return speed_camera_component

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python日期操作学习笔记
Oct 07 Python
使用Python编写vim插件的简单示例
Apr 17 Python
python动态加载包的方法小结
Apr 18 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
django rest framework之请求与响应(详解)
Nov 06 Python
TensorFlow实现卷积神经网络
May 24 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
python实现超市商品销售管理系统
Nov 22 Python
Python操作redis和mongoDB的方法
Dec 19 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
python 两个数据库postgresql对比
Oct 21 #Python
python多进程(加入进程池)操作常见案例
Oct 21 #Python
Python实现字符串中某个字母的替代功能
Oct 21 #Python
基于Python实现船舶的MMSI的获取(推荐)
Oct 21 #Python
基于Python解密仿射密码
Oct 21 #Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 #Python
python超时重新请求解决方案
Oct 21 #Python
You might like
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
35个Python编程小技巧
2014/04/01 Python
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
Python 实现进度条的六种方式
2021/01/06 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
日本语毕业生自荐信
2014/02/01 职场文书
学习十八大报告感言
2014/02/04 职场文书
思想政治表现评语
2015/01/04 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
导游词幽默开场白
2019/06/26 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js