【发布时间】:2014-02-24 13:10:31
【问题描述】:
一个用户输入模块,它遍历导入的模块,如图所示。我怎样才能让它遍历所有导入的模块,因为它只遍历 foo
from packageA import foo # has open_book() function
from packageB import bar# has read_music() function
from packageC import loader# has loader() function
import re
import sys
import difflib
def search():
name = input('Please enter your query: ').lower().split()
while True:
for name in ["open_book","read_music","loader" ]: #help code here
getattr(foo, "open_book")()
getattr(bar, "read_music")()
else:
print ('Try again')
【问题讨论】:
-
您预计会发生什么?您的代码还可以在此处访问
bar.read_music()。您想调用所有 3 个模块上的 3 个名称吗? -
如果您的 3 个模块有 3 个不同的功能,为什么不直接使用
foo.open_book()、bar.read_music()和loader.loader()?例如。直接引用方法?为什么它必须动态发生? -
@Martijn,是的,可以调用所有三个不同的模块。使用名称(用户输入)是遍历这三个并按照 sn-ps 中编程的方式输出
-
这并没有回答我的问题,不是真的。完全不清楚您要在这里做什么。
-
我这里没有 foo、bar 或 loader 模块 sn-ps,但有用户输入,例如'open book',它将遍历所有三个搜索将输出答案的那个
标签: python function python-3.x getattr