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标准日志模块logging的使用方法
Nov 01 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
python学习教程之Numpy和Pandas的使用
Sep 11 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
python采集微信公众号文章
Dec 20 Python
Python实现KNN(K-近邻)算法的示例代码
Mar 05 Python
Numpy的简单用法小结
Aug 28 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
Python常用数据分析模块原理解析
Jul 20 Python
Python基于locals返回作用域字典
Oct 17 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/04/24 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
匹配任意字符的正则表达式写法
2010/04/29 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
JQuery魔力之$("tagName")与selector
2012/03/05 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
python-str,list,set间的转换实例
2018/06/27 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
Django框架models使用group by详解
2020/03/11 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
英语专业毕业生自我鉴定
2013/11/09 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
先进单位申报材料
2014/12/25 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
用Python实现屏幕截图详解
2022/01/22 Python
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL