我尝试将两个数组从一个python文件(agent.py)传递给一个新模块(moea.py)。MOEA文件利用了PyGMO,如果有人也有这方面的专业知识的话。
简而言之,我正在构建两个数组,A和B,它们将控制MOEA搜索的机制。
在agent.py中,我有:
self.A = []
self.B = []
*code that fills A and B*
problem = R()在moea.py中,我有:
import agent
class R(base):
def __init__(self):
super(R,self).__init__(len(self.A),0,4)
self.set_bound(0,len(self.B))这会给出一个错误,即moea.py无法找到对象A或B。__init__的目的是创建一组包含len(self.A)的条目,这些条目的变量范围在0和len(self.B)之间。
编辑:此编辑的目的是希望澄清手头的问题。我相信这个问题可以简化为“是否可以在不更改输入变量数量的情况下将数据从其他.py文件导入到单独的__init__中”。在测试一些其他想法的同时,我更改了一些其他代码。
agent.py:
import moea
class Agent:
def __init__(self, ...)
self.A = []
self.test = 2
*other attribute statements*
def function(...)
self.A = [] #To clear the array on subsequent uses
*code to fill A*
problem = moea.R()在moea.py中,我有:
import agent
class R(base) #using the _base definition from the link below
def __init__(self):
print agent.Agent.test
super(R,self).__init__(len(agent.Agent.A),0,4)
...我的问题是测试语句说Agent属性测试不存在。如果它不能同时找到附加到agent.py文件和该文件中的代理类的属性,那么它为什么能够找到该类呢?如果我能让类R的__init__读取代理的一些属性,那么代码就完整了。
有关基类的信息可以在以下位置找到:PyGMO documentation
发布于 2014-11-15 04:21:37
在agent.py中:
import moea
self.A = []
self.B = []
*code that fills A and B*
problem = moea.R(self.A, self.B)在moea.py中:
class R(base):
def __init__(self, A, B):
super(R,self).__init__(len(A),0,4)
self.set_bound(0,len(B))简而言之,“显式比隐式更好”,在你的情况下,没有循环导入(IMO)就没有其他方法可以做到这一点,这会造成更多的混乱。此外,我将导入更改为另一个文件(我不知道如果没有导入,R将如何可用)
https://stackoverflow.com/questions/26937145
复制相似问题