【问题标题】:How do I mutate/modify an instance attribute?如何变异/修改实例属性?
【发布时间】:2015-10-17 18:16:59
【问题描述】:

我想将我第一次启动课程与其他所有时间区分开来。我创建了一个实例属性并将其值设置为 True。我该怎么做才能让所有后续实例将该属性值设为 False?

class Cool(Dude): 

    def __init__(self):
        self.coolnesscheck = True

【问题讨论】:

    标签: python python-3.x instance mutation


    【解决方案1】:

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

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

    我在名字前面加上__来引入Name Mangling,这样在类外就不容易访问该属性了。

    【讨论】:

    • 很高兴能为您提供帮助! :-) 。如果您觉得答案很有帮助,我还想请您通过单击答案左侧的勾号来接受答案(您认为最有帮助的任何答案),这将对社区有所帮助.
    • 顺便说一句,if..else 是不必要的 - 它与 if x == 1: return 1; elif x == 2: return 2... 的反模式匹配。
    • 如果您在类方法(此处为__init__)中将Cool 替换为self.__class__,则可以在不更改代码的情况下随意重命名类。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-23
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2016-12-24
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多