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 相关文章推荐
使用IPython来操作Docker容器的入门指引
Apr 08 Python
Python实现方便使用的级联进度信息实例
May 05 Python
使用Python的turtle模块画图的方法
Nov 15 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
Python中作用域的深入讲解
Dec 10 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
执行Python程序时模块报错问题
Mar 26 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 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
php学习之数据类型之间的转换介绍
2011/06/09 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
Python调用C++程序的方法详解
2017/01/24 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
Django异步任务线程池实现原理
2019/12/17 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
个人简历的自荐信
2013/10/23 职场文书
消防安全标语
2014/06/07 职场文书
保密工作承诺书
2014/08/29 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
退休教师追悼词
2015/06/23 职场文书
MYSQL 运算符总结
2021/11/11 MySQL
MySQL批量更新不同表中的数据
2022/05/11 MySQL