【发布时间】:2021-10-25 21:36:21
【问题描述】:
我有一个 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 是一个类,通过类组合关系链接到另一个类。
现在我想在每个循环中重置类的实例并且:
- 我不想为每个周期创建一个具有不同名称的新实例
- 我不想在
A中编写用于手动 重置属性的方法,因为它们很多且并非全部在__init__方法中定义,而是分布在各种方法中班级。
我只希望在每个循环中,相同的旧实例都呈现出刚刚创建后的相同状态;为此,我将继续在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 重新开始,这是一种安全的方法,还是有一些我没有考虑的缺点?
附: 在线搜索我看到了一些以前的类似帖子(如Preferred way of resetting a class in Python),但我想了解这种特定方式是否有效,以及在继续进行时我是否应该小心某些事情。 显然,如果这种方法是解决我的问题的错误方法,那么适合我情况的其他方法/解决方案也很受欢迎(但在这种情况下,我想了解问题出在哪里)
【问题讨论】:
-
就我完全可以理解的问题而言,您似乎在问一个关于编程风格的主观问题 - is off topic here。
-
嗨,卡尔,我不会这么说;我不确定这种方法的正确性,所以我要求更好地理解它。如果该方法是错误的,那么适合我情况的不同方法肯定也会被接受;无论如何,谢谢你的评论,我会在我的问题结束时澄清这一点
-
创建一个新实例几乎肯定会更好。你不需要一个不同的名字。原始代码块中的代码运行良好。
-
所以第二次调用该类将重置所有因为这是我第一次调用它?
标签: python class initialization instance reset