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装饰器与递归算法详解
Feb 18 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
Python中django学习心得
Dec 06 Python
numpy中索引和切片详解
Dec 15 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
Mar 10 Python
在python image 中实现安装中文字体
May 16 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
python中的getter与setter你了解吗
Mar 24 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 读取文件内容代码(txt,js等)
2009/12/06 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
行政人员岗位职责
2013/12/08 职场文书
电子商务自荐书范文
2014/01/04 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
租房协议书怎么写
2014/04/10 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
教育读书笔记
2015/07/02 职场文书
物业保洁员管理制度
2015/08/05 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python