获取getattr

时间:2016-06-29 09:22:36

标签: python django getattr

我有两个python文件,两者都在同一目录级别,如此

project
      |> tasks.py
      |> queue.py

我在tasks.py档案

中有这样的功能
def foo(message):
    # perform some functions on message data
    # blah blah

queue.py文件中的另一个函数,如此

import project.tasks
def run_task(function_name, data):
    # function name is a string which tells which function to call in tasks.py file
    return getattr(project.tasks, function_name)(data)

我不想硬编码我的函数名。我想基于function_name参数动态访问它们。我的tasks.py变得非常大,因此我想将它分成几部分。我做的是将tasks.py文件移动到这样的python包中。

project
      |> tasks
              |> __init__.py
              |> tasks.py
      |> queue.py

我想问的问题是我如何修改我的run_task函数以便为这个结构工作。作为getattr函数任务的第一个参数是一个对象。有没有其他可用的选项,我可以用来访问task包中的函数。?

1 个答案:

答案 0 :(得分:0)

来自@jonrsharpe评论的回答。 将以下内容放入__init__.py

  

来自.tasks import *

从任务模块中公开tasks.py中的所有名称。对tasks包中的所有文件执行此操作。