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

2024-05-20 00:55:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想区分我第一次初始化一个类和其他所有初始化它的时间。我已经创建了一个实例属性并将其值设置为True。如何使所有后续实例的属性值都为False?你知道吗

class Cool(Dude): 

    def __init__(self):
        self.coolnesscheck = True

Tags: 实例selffalsetrue属性initdef时间
2条回答

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

class Cool:
    __firstinit = True

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

我在名称前面加了__来引入Name Mangling,这样属性就不容易在类外访问了。你知道吗

使用class属性,并在实例化该类的对象时将其设置为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

相关问题 更多 >