class 个实例的出厂重置
Factory Reset of a class instance
我有一个Python代码,其结构如下:
for i in range (0,N):
ClassInstance = A(params)
... #some operation that modify the attribute of the instance "ClassInstance" of the class "A"
A
是一个 class 通过 class 组合关系链接到另一个的
现在我想在每个循环周期重置 class' 实例并且:
- 我不想为每个周期创建一个不同名称的新实例
- 我不想在
A
中编写用于 手动 属性重置的方法,因为它们很多而且并非全部在 [=16= 中定义]方法里面却流传着class. 的各种方法
我只希望在每个周期中,相同的旧实例都采用刚创建后的相同状态;为此,我将继续在 A
中放置一个重置方法,如下所示:
def reset(self, params):
self = A(params)
修改代码结构如下:
ClassInstance = A(params)
for i in range (0,N):
ClassInstance.reset(params)
... #some operation that modify the attribute of the instance "ClassInstance" of the class "A"
忘记 ClassInstance 以前的历史,在每个周期从 0 重新启动,或者有一些我没有考虑的缺点是安全的方法吗?
P.S。
在网上搜索我看到了一些以前类似的 post(如 ),但我想了解这种特定方式是否有效,以及在进行时是否应该注意某些事情。
很明显,如果这种方法是解决我问题的错误方法,其他适合我情况的 approches/solutions 也被很好地接受(但在那种情况下我想了解问题出在哪里)
当你像 a=obj
这样的变量赋值时,你必须理解 =
运算符的作用
这不会修改变量指向的对象。这只是设置变量从那时起将引用哪个对象,而不管旧对象。
所以ClassInstance = A()
创建一个新对象并将其赋值给变量ClassInstance
旧实例不再被引用,您无法再访问它。所以在每个循环中你都有一个新的实例。
此外,您无法通过执行 self = A()
来重置实例 您正在将新对象分配给局部变量 self
。 self
引用的实例未被触及。而且,当方法returns时,self变量被释放,实例不再被引用,所以被销毁
通常分配给变量不会做任何事情。就像给一个物体贴上标签一样。 self
和其他变量一样是一个变量。没什么特别的。
重置实例的唯一方法是手动设置其属性。
('object' 和 'instance' 在这种情况下意思相同)
顺便说一下,您不能 python 实际销毁对象。例如,您可以使用 del a
删除变量,但是当对象不再被引用时,它们会自动销毁。
我有一个Python代码,其结构如下:
for i in range (0,N):
ClassInstance = A(params)
... #some operation that modify the attribute of the instance "ClassInstance" of the class "A"
A
是一个 class 通过 class 组合关系链接到另一个的
现在我想在每个循环周期重置 class' 实例并且:
- 我不想为每个周期创建一个不同名称的新实例
- 我不想在
A
中编写用于 手动 属性重置的方法,因为它们很多而且并非全部在 [=16= 中定义]方法里面却流传着class. 的各种方法
我只希望在每个周期中,相同的旧实例都采用刚创建后的相同状态;为此,我将继续在 A
中放置一个重置方法,如下所示:
def reset(self, params):
self = A(params)
修改代码结构如下:
ClassInstance = A(params)
for i in range (0,N):
ClassInstance.reset(params)
... #some operation that modify the attribute of the instance "ClassInstance" of the class "A"
忘记 ClassInstance 以前的历史,在每个周期从 0 重新启动,或者有一些我没有考虑的缺点是安全的方法吗?
P.S。
在网上搜索我看到了一些以前类似的 post(如
当你像 a=obj
=
运算符的作用
这不会修改变量指向的对象。这只是设置变量从那时起将引用哪个对象,而不管旧对象。
所以ClassInstance = A()
创建一个新对象并将其赋值给变量ClassInstance
旧实例不再被引用,您无法再访问它。所以在每个循环中你都有一个新的实例。
此外,您无法通过执行 self = A()
来重置实例 您正在将新对象分配给局部变量 self
。 self
引用的实例未被触及。而且,当方法returns时,self变量被释放,实例不再被引用,所以被销毁
通常分配给变量不会做任何事情。就像给一个物体贴上标签一样。 self
和其他变量一样是一个变量。没什么特别的。
重置实例的唯一方法是手动设置其属性。
('object' 和 'instance' 在这种情况下意思相同)
顺便说一下,您不能 python 实际销毁对象。例如,您可以使用 del a
删除变量,但是当对象不再被引用时,它们会自动销毁。