【发布时间】:2021-04-07 10:51:02
【问题描述】:
我打算让用户在运行时(在我的 Python 3.8 程序中)决定从给定的一组类中加载哪个类来执行某些操作。
例如,如果我们谈论食物,用户可以决定是选择eggs 还是sausage。这两个类都定义在一个或多个单独的文件中,(这两个文件都)包含在一个已知文件夹中。
现在,我的问题是如何在给定字符串表示 eggs(由用户输入)的情况下加载相应的类 eggs。我看到存在一种方法__import__,它旨在解决此类问题。根据documentation,可以通过执行以下命令访问spam.ham 中定义的类eggs:
_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], -1)
eggs = _temp.eggs
相当于from spam.ham import eggs。
这个例子的问题是它假设了代码 sn-p _temp.eggs,在我的例子中,这不是先验的/已知的。
因此,我想知道如何将eggs = _temp.eggs 转换为一些语句,其中_temp.eggs 被一些语句替换,其中.eggs 被eggs 的一些字符串表示替换。
例如,给定_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], -1),我正在寻找像eggs = _temp['eggs'] 这样的命令。
【问题讨论】: