Python 如何变异/修改实例属性?

Python 如何变异/修改实例属性?,python,python-3.x,instance,mutation,Python,Python 3.x,Instance,Mutation,我想区分我第一次启动一个类与所有其他启动它的时间。我已经创建了一个实例属性,并将其值设置为True。对于所有后续实例,我该如何将该属性值设置为False class Cool(Dude): def __init__(self): self.coolnesscheck = True 您可以使用class属性来指示第一个对象是否已创建。范例- class Cool: __firstinit = True def __init__(self):

我想区分我第一次启动一个类与所有其他启动它的时间。我已经创建了一个实例属性,并将其值设置为True。对于所有后续实例,我该如何将该属性值设置为False

class Cool(Dude): 

    def __init__(self):
        self.coolnesscheck = True

您可以使用class属性来指示第一个对象是否已创建。范例-

class Cool:
    __firstinit = True

    def __init__(self):
        self.coolnesscheck = Cool.__firstinit
        Cool.__firstinit = False

我以要介绍的名称预先添加了
,因此属性在类外不容易访问。

使用类属性,并在实例化该类的对象时将其设置为
False

>>> class Cool:
...     coolnesscheck = True
...     def __init__(self):
...         self.coolnesscheck = Cool.coolnesscheck
...         Cool.coolnesscheck = False
...
>>> Cool.coolnesscheck
True
>>> a = Cool()
>>> Cool.coolnesscheck
False
>>> a.coolnesscheck
True
>>> b = Cool()
>>> Cool.coolnesscheck
False
>>> b.coolnesscheck
False

很高兴我能帮上忙!:-)。如果您觉得答案有帮助,我也希望您通过点击答案左侧的勾号来接受答案(任何您认为最有帮助的答案),这将对社区有所帮助。顺便说一下,但是,
if..else
是不必要的-它与
if x==1:return 1的反模式匹配;elif x==2:返回2…
。如果在类方法中(此处为
\uuuuu init\uuuuuuu
)将
Cool
替换为
self.\uuuu class\uuuuuu
,则可以根据需要重命名该类,而无需更改代码。