我正在尝试在函数中创建一个类的新实例。第一次创建实例时,虽然当我尝试创建一个额外的实例(通过重新访问路径)时,我将返回对原始对象的引用。
这来自我构建应用程序的方式。请参阅以下简化代码:
@tests.route('/generate_test/<t_type>', methods=['GET'])
def generate_test(t_type):
test_obj = t[t_type]['obj']
...
return test_obj
其中t是如下字典:
t = {
'footests': {'obj': FooTest(),
'name': 'Foo Test',
...
},
...
}
由于有许多不同类型的测试,我希望我可以使用此方法来提供与某种测试相关的所有额外细节。当我第一次生成新测试时,测试对象FooTest
是新的,意味着id = None
等。
虽然,一旦我第二次尝试生成新测试,字典t
中的实例仍然是第一次与测试实例关联,这意味着id = <id_from_last_time>
我尝试使用db_session.expunge(test_obj)
和del(test_obj)
(都在我的Flask
路线内)删除对象,但我仍然在获取对原始对象的引用。
我希望字典t
每次调用它时都会提供新对象实例。
答案 0 :(得分:1)
如果我理解你的问题,你只需要在每次调用路径时创建实例,而不是简单地读取先前创建的实例的值。
在你的路线中:
test_obj = t[t_type]['obj']()
在t
定义中:
t = {
'footests': {'obj': FooTest,
'name': 'Foo Test',
...
},
...
}