【问题标题】:why reload doesn't work with written from scratch class?为什么重新加载不适用于从头开始编写的类?
【发布时间】: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


    【解决方案1】:

    我的一个好朋友帮了我,不到一分钟就发现了错误:

    import EvalInd
    x= EvalInd.EvalInd()
    

    上述更改解决了所有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      相关资源
      最近更新 更多