【发布时间】:2020-06-30 17:42:45
【问题描述】:
我在 Ubuntu 20.04 上运行 Python 3.6。 我正在编写一个进化算法,我将染色体值转换为具有评估函数的类,但是当我调用新编写的类时它不会更新。我尝试使用重新加载,但它给了我一个错误。请帮忙!
def ddWriteStg(individual):
stg= open('EvalInd.py','w')
stg.write('class EvalInd:\n\n')
if individual[1]<individual[3]:
fast=individual[1]
slow=individual[3]
else:
slow=individual[1]
fast=individual[3]
stg.write('\tdef loadParms(self):\n')
stg.write('\t\tself._fast='+str(fast)+'\n')
stg.write('\t\tself._slow='+str(slow)+'\n\n')
stg.write('\tdef __init__(self):\n')
stg.write('\t\tself.loadParms()\n')
stg.write('\t\tpass\n')
stg.write('\tdef evaluate(self):\n')
stg.write('\t\treturn self._fast+self._slow\n')
stg.close()
import importlib
def evaluateInd(individual):
ddWriteStg(individual)
from EvalInd import EvalInd
importlib.reload(EvalInd)
x=EvalInd()
val=x.evaluate()
return val
ind=[1,47,1,52]
a=evaluateInd(ind)
print(str(a))
ind=[1,60,1,80]
a=evaluateInd(ind)
print(str(a))
输出:如果我不包括重新加载行,我会得到: 99 99 在我包含重新加载行之后:
Traceback (most recent call last):
File "test.py", line 65, in <module>
a=evaluateInd(ind)
File "test.py", line 59, in evaluateInd
importlib.reload(EvalInd)
File "/usr/lib/python3.6/importlib/__init__.py", line 139, in reload
raise TypeError("reload() argument must be a module")
TypeError: reload() argument must be a module
感谢您的帮助!
【问题讨论】:
标签: class python-3.6 python-importlib