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判断windows系统是32位还是64位的方法
May 11 Python
Python中type的构造函数参数含义说明
Jun 21 Python
详解python单例模式与metaclass
Jan 15 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
python实现转圈打印矩阵
Mar 02 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
python列表的逆序遍历实现
Apr 20 Python
python中upper是做什么用的
Jul 20 Python
python上下文管理器异常问题解决方法
Feb 07 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
Python模块的加载讲解
2019/01/15 Python
Python常用的json标准库
2019/02/19 Python
python异步存储数据详解
2019/03/19 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
Python实现汇率转换操作
2020/05/03 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
班级文化建设标语
2014/06/23 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
python 详解turtle画爱心代码
2022/02/15 Python