在Python中重置类的首选方法

在Python中重置类的首选方法,第1张

在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()
只设置本地引用,该本地引用将在方法的末尾超出范围(并且破坏了新实例)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5673372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存