因此,我正在用Python创建一个类,该类创建一个网络(使用pybrain),只使用它提供的数字输入{只需要一个小过程,就可以在pybrain的API中让我的脚湿润}。你知道吗
我的问题是,我对作用域在类中的工作方式相当陌生,虽然我基本上正确地设置了程序,但它总是返回一个keyerror。你知道吗
所有需要处理的变量都是在init函数中创建的;我正在为类处理的方法是使用Python中的vars()[]方法调用init函数中声明的一个变量。(实际上,您可以在这里看到代码的一部分…草稿: Matching Binary operators 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()[自连接+str(1)],它应该检索变量“Connection1”的值(自连接='Connection'),但调用keyerror。你知道吗
我如何得到要传递的变量?如果你需要更多的信息,尽管问吧,我会尽量缩短提问时间。你知道吗
vars()
返回对局部变量字典的引用。如果您在__init__
中使用了vars()
(正如您链接到的文章中的代码所示),那么您只是在该方法中创建了一个局部变量,而该局部变量不能从该方法之外的任何地方访问。你知道吗你认为
vars()
做了什么,你想做什么?我有预感你想要的是getattr
和setattr
,或者只是一本字典,而不是vars
。你知道吗编辑:根据您的评论,听起来确实不应该使用
vars
。在__init__
中,你最好做如下事情:然后在你的方法中,做:
不过,这只是基于代码的模糊猜测。我真的说不出你想要什么“连接”。您希望它是与您的对象关联的一些数据吗?你知道吗
相关问题 更多 >
编程相关推荐