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 22 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
python实现微信发送邮件关闭电脑功能
Feb 22 Python
python中使用zip函数出现错误的原因
Sep 28 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
Python List列表对象内置方法实例详解
Oct 22 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
深入浅析Django MTV模式
Sep 04 Python
Python实现视频中添加音频工具详解
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
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP引用的调用方法分析
2016/04/25 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
Python中的localtime()方法使用详解
2015/05/22 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
Python类的动态绑定实现原理
2020/03/21 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
《世界多美呀》教学反思
2014/03/02 职场文书
法定代表人授权委托书
2014/04/04 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
红色故事汇观后感
2015/06/18 职场文书
毕业典礼主持词
2015/06/29 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers