获取 getattr 的 Python 包中的所有函数

Get all functions inside a Python Package for 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 函数以便为这个结构工作。 As getattr 函数任务的第一个参数是一个对象。是否有任何其他选项可用,我可以使用它来访问 task 包内的功能。?

来自@jonrsharpe 评论的回答。 在 __init__.py

中输入以下内容

from .tasks import *

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