我有一长串可能需要导入的文件。我只需要其中的一个,它们都具有相同的界面。 (选择支付网关来处理付款)使用变量“插值”创建导入语句
假设我有一个字典表示所有网关文件的名称。
即
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
是一种能够导致导入语句,它实际进口。
这样的事情可能吗?
你确定你的程序只处理一次付款然后退出吗?这听起来不寻常。 – 2012-07-10 00:16:19
我不确定这是多么的不寻常。如果您进行在线购物并要求结账,您为什么要使用多个网关处理交易? – Rico 2012-07-10 15:42:33
您一次只能使用一个,但通常在线购物将由长期运行的流程处理,该流程在其整个生命周期内处理许多请求。 – 2012-07-10 17:32:47