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快速排序代码实例
Nov 21 Python
Python Sleep休眠函数使用简单实例
Feb 02 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python实现把数字转换成中文
Jun 29 Python
Python实现按学生年龄排序的实际问题详解
Aug 29 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
Python for循环生成列表的实例
Jun 15 Python
实例讲解Python爬取网页数据
Jul 08 Python
python实现彩色图转换成灰度图
Jan 15 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
scrapy头部修改的方法详解
Dec 06 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对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
财务管理职业生涯规划范文
2013/12/27 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
销售内勤岗位职责
2014/04/15 职场文书
影子教师研修方案
2014/06/14 职场文书
北京颐和园导游词
2015/01/30 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书