所以我正在用 Python 制作一个类,它只使用它给出的数字输入来创建一个网络(使用 pybrain){只是在 Pybrain 的 API 中让我的脚湿透的一个小过程}。
我的问题是,我对范围在类中的工作方式相当不熟悉,虽然我基本上已经正确设置了程序,但它一直返回一个 keyerror。
所有需要作用的变量都在init函数中创建;我正在为该类工作的方法试图调用一个变量,该变量在init函数中使用 Python 中的 vars()[] 方法声明。(您实际上可以在此处看到代码的一部分……草稿: Matching Binary operator in Tuples to Dictionary Items
无论如何,方法是:
def constructnetwork(self):
"""constructs network using gathered data in __init__"""
if self.recurrent:
self.network = pybrain.RecurrentNetwork
#add modules/connections here
elif self.forward:
self.network = pybrain.FeedForwardNetwork
else:
self.network = pybrain.network
print vars()[self.CONNECT+str(1)]
print vars()[self.CONNECT+str(2)]
print self.network
(请原谅错误的间距,它没有很好地复制和粘贴。)引发 KeyError 的部分是“print vars()[self.CONNECT+str(1)],它应该检索变量的值” Connection1" (self.CONNECT = 'Connection'),但调用了 keyerror。
我如何让变量转移过来?如果您需要更多信息来帮助您询问,我会尽量缩短问题。