您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中重置类的首选方法

在Python中重置类的首选方法

两者都是正确的,但是语义并不是以相同的方式实现的。

为了能够重置实例,我将编写以下代码(我更喜欢从__init__相反的位置调用自定义方法,因为这__init__是一种特殊方法,但这主要是出于口味问题):

class Foo:
    def __init__(self):
        self.reset()
    def reset(self):
        # set all members to their initial value

您以这种方式使用它:

Foo foo      # create an instance
...
foo.reset()  # reset it

实际上,从头开始创建新实例更为简单,因为该类无需实现任何特殊方法

Foo foo      # create an instance
...
foo = Foo()  # make foo be a brand new Foo

如果旧实例未在其他任何地方使用,则将被垃圾回收

两种方法都可用于所有初始化都在中完成的 普通__init__,但是第二种方法对于在创建时使用定制的特殊类__new__(例如不可变类)是必需的。

但是请注意,这段代码

def reset(self):
    Foo()

会 做你想做的:它只是创建一个新的实例,并立即删除它,因为它会在方法的走到底的范围了。甚至self = Foo()只设置本地引用,该本地引用将在方法的末尾超出范围(并且破坏了新实例)。

python 2022/1/1 18:44:52 有299人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶