【发布时间】:2012-07-09 23:19:46
【问题描述】:
我有一长串可能需要导入的文件。我只需要其中的 1 个,而且它们都有相同的界面。 (选择支付网关来处理支付)
假设我有一个代表所有网关文件名称的字典。
即
gateways = {
'1' : 'authorize',
'2' : 'paysimple',
'3' : 'braintreepayments',
'4' : 'etc',
}
我根据数据库中的信息知道这本词典的键。因此,如果我收到网关值为 1 的支付流程请求,我知道它需要由 Authorize.net 处理。 A 2 将由 Pay Simple 处理。等等。
我希望能够创建一个使用我知道的信息构建的导入语句,而不是一个可怕的 elif 语句列表。
考虑下面的简单方法:
# For the purposes of this example assume payment_gateway is defined
# elsewhere and represents the key to the dictionary
gateway_file = gateways.get(payment_gateway)
import_str = "from gateway_interface.%s import process" % gateway_file
gogo(import_str)
gogo 是一种使 import 语句实际导入的方法。
这样的事情可能吗?
【问题讨论】:
-
您确定您的流程只处理一笔付款然后退出吗?这听起来很不寻常。
-
我不确定这有什么不寻常之处。如果您进行在线购物并要求结帐,为什么要使用多个网关处理交易?
-
您一次只能使用一个,但通常在线购物将由一个长时间运行的进程处理,该进程在其生命周期内处理许多请求。
-
@Ned Batchelder 你能详细说明一下这个想法吗?我不确定我是否理解为什么让进程继续运行会是有利的。我们正在使用 Django 并发布到一个视图,这将产生这个过程。你有更好的方法来处理这个问题吗?
标签: python import string-interpolation