【问题标题】:How to properly reinitialise python object?如何正确重新初始化python对象?
【发布时间】:2020-08-12 11:37:53
【问题描述】:

例如,我有这个类:

class A:
    def __init__(self):
        self.a = 10

在实例生命周期中,我将 a 的值更改为 20

test = A()
test.a = 20

我可以通过什么方式正确地重新初始化这个实例,使其成为默认值?

调用__init__的方式好吗?

【问题讨论】:

  • test = A() 是一个选项吗?
  • @Epic 不,应该是同一个对象
  • 您能否简要说明为什么您希望它是同一个对象?
  • 有一个非常相似的问题here

标签: python


【解决方案1】:

调用__init__ 可以解决问题,但我不建议这样做,因为其他人可能更难阅读您的代码来快速理解您正在尝试做什么。我会创建一个reset() 函数:

class A:
    def __init__(self):
        self.a = 10

    def reset(self):
        self.a = 10

现在,

test = A()
test.a = 20
test.reset() # now test.a = 10

为了避免代码重复,你也可以从你的__init__调用reset()函数:

class A:
    def __init__(self):
        self.reset()

    def reset(self):
        self.a = 10

【讨论】:

  • 我也是这么想的,但是如果init函数里的逻辑很大,那不就是一大段重复代码吗?
  • @IgorAlex 另一种方法是创建reset() 函数并在您的__init__ 中调用它。在这种情况下,您不会复制任何代码。
【解决方案2】:

调用__init__ 就像第二次调用另一种语言的构造函数。你不能这样做。

您可以创建一个名为reset_variables 的方法,该方法将在构造函数中调用,并且您可以自己调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多