在Jupyter笔记本中的Python OO,对象不会重新初始化

时间:2016-05-21 17:07:45

标签: python python-2.7 oop jupyter

我不知道这是否是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时会打印旧值,但不会在这种小情况下。

0 个答案:

没有答案