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 相关文章推荐
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 Python
Python CSV模块使用实例
Apr 09 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
django文档学习之applications使用详解
Jan 29 Python
Django实现发送邮件功能
Jul 18 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
python怎么删除缓存文件
Jul 19 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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截取中文字符串不乱码的方法
2013/12/25 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
如何离线执行php任务
2017/02/21 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery动画特效实例教程
2014/08/29 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
理解javascript async的用法
2017/08/22 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
python 实现端口扫描工具
2020/12/18 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
客服专员岗位职责范本
2013/11/29 职场文书
美容院考勤制度
2014/01/30 职场文书
工程安全员岗位职责
2014/03/09 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
投标邀请书范本
2015/02/02 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
经费申请报告范文
2015/05/18 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书