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中的__new__()方法的使用
Apr 09 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
新手入门Python编程的8个实用建议
Jul 12 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
Python实现自动打开电脑应用的示例代码
Apr 17 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
在pycharm中无法import所安装的库解决方案
May 31 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
pandas ix &iloc &loc的区别
2019/01/10 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
详解如何修改python中字典的键和值
2020/09/29 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
大学生党课思想汇报
2013/12/29 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
在校生自我鉴定
2014/01/23 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
总结高并发下Nginx性能如何优化
2021/11/01 Servers
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫