获取 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
包中的所有文件执行此操作。
我有两个 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
包中的所有文件执行此操作。