我不知道这是否是Jupyter,Python或我对面向对象编程缺乏知识的产物,但我创建了一个遗传算法优化器,我正在Jupyter笔记本中开发。一切正常,但是当我重新运行生成Optimizer对象的单元格然后调用optimize函数时,它(有时)不会用新设置覆盖对象。我很困惑,任何人都知道这会导致什么?这是单元格的内容:
db = MySQLdb.connect(host="localhost", port=3306, user="root", passwd="admin", db="echo")
cursor = db.cursor()
cursor.execute( "INSERT INTO `post` (`hello`) VALUES (null), ('hello_world')" )
db.commit()
db.close()
当我重新启动内核时,或者有时当我运行其他一些单元格时,它会更新它。详细程度和更改初始化值(染色体中的位数/基因数)表明它是否已更新。
编辑:
GeneticOptimization内部发生的一个小例子:
单元格1:
optimization = GeneticOptimization(Fitness(sum), 500, 50, initializer=100)
top_member, top_fitness, fitness_values = optimization.optimize(verbose=True)
Cell 2:
def get_number(number):
if isinstance(number,int):
return number
elif isinstance(number,str):
return int(number)
else:
raise ValueError('No valid number returned')
class Test:
def __init__(self, number):
self.number = get_number(number)
def print_number(self):
print self.number
因此,有时在重新运行Cell 2时会打印旧值,但不会在这种小情况下。