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使用PyFetion来发送短信的例子
Apr 22 Python
Python中使用动态变量名的方法
May 06 Python
跟老齐学Python之复习if语句
Oct 02 Python
深入理解Python中装饰器的用法
Jun 28 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
python多线程扫描端口(线程池)
Sep 04 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
django rest framework serializers序列化实例
May 13 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
Python爬虫代理池搭建的方法步骤
Sep 28 Python
python基于openpyxl生成excel文件
Dec 23 Python
用Python进行栅格数据的分区统计和批量提取
May 27 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 flush()与ob_flush()的区别详解
2013/06/03 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
JS 事件绑定函数代码
2010/04/28 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
神经网络python源码分享
2017/12/15 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
基于python图像处理API的使用示例
2020/04/03 Python
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
银行出纳岗位职责
2013/11/25 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
大学生求职信例文
2014/06/29 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript