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 open()文件处理使用介绍
Nov 30 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
Dec 18 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
Python3 修改默认环境的方法
Feb 16 Python
Python TestCase中的断言方法介绍
May 02 Python
python elasticsearch环境搭建详解
Sep 02 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
keras的siamese(孪生网络)实现案例
Jun 12 Python
python爬取招聘要求等信息实例
Nov 20 Python
Python 键盘事件详解
Nov 11 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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(1)
2006/10/09 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
js实现打字小游戏
2019/12/17 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
python字符串替换示例
2014/04/24 Python
Python多进程编程技术实例分析
2014/09/16 Python
python绘制多个曲线的折线图
2020/03/23 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
python对csv文件追加写入列的方法
2019/08/01 Python
在django中,关于session的通用设置方法
2019/08/06 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
文科毕业生自荐书范文
2014/04/17 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
项目负责人岗位职责
2015/02/15 职场文书
学校开除通知书
2015/04/25 职场文书
医院见习总结
2015/06/24 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书