python 动态调用函数实例解析

作者:百变小超 时间:2021-03-11 09:31:41 

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

来源:https://www.cnblogs.com/dasheng-maritime/p/7833658.html

标签:python,动态,调用,函数
0
投稿

猜你喜欢

  • SQL根据时间范围条件查询数据

    2009-01-18 13:32:00
  • Python爬取当网书籍数据并数据可视化展示

    2023-11-20 11:31:14
  • 对Python的zip函数妙用,旋转矩阵详解

    2023-06-09 12:42:45
  • Excel VBA连接并操作Oracle

    2009-08-08 22:58:00
  • sqlserver 存储过程动态参数调用实现代码

    2011-10-24 19:41:22
  • oracle命令行删除与创建用户

    2008-01-02 17:01:00
  • python 列表常用方法超详细梳理总结

    2022-04-18 20:34:27
  • javascript设计模式 – 简单工厂模式原理与应用实例分析

    2023-08-27 19:53:20
  • JAVA正则表达式 Pattern和Matcher

    2023-07-01 19:13:53
  • Django使用unittest模块进行单元测试过程解析

    2021-04-03 13:09:08
  • Python中np.argmax()函数用法示例

    2021-06-17 23:47:09
  • 动易CMS:九个常见的错误原因分析及解决方法(ZT)

    2008-07-01 12:40:00
  • Oracle 安装和卸载问题收集(集合篇)第1/6页

    2009-07-02 12:20:00
  • Mootools 1.2教程(22)——同时进行多个形变动画

    2008-12-29 14:11:00
  • Python 如何读取字典的所有键-值对

    2021-05-21 10:06:53
  • pandas库中 DataFrame的用法小结

    2021-08-11 00:54:01
  • 细化解析:MySQL+Webmin轻松创建数据库

    2009-01-14 13:13:00
  • python中根据字符串调用函数的实现方法

    2023-10-03 03:40:12
  • Python3中urlopen()的用法解读

    2023-11-22 20:26:19
  • 如何定义记录集打开的游标类型?

    2009-11-15 20:19:00
  • asp之家 网络编程 m.aspxhome.com