Python:How-to:依赖于flag的实例的属性,flag本身就是该实例/对象的属性

2024-09-29 21:39:58 发布

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

考虑下面的最小例子来回答我的问题:

class MyClass:
    a = False
    b = 0
    if a:
        b = 1

MCinst = MyClass()

这里MCinst有两个属性MCinst.aMCinst.b,分别具有默认值False0。我试图通过if语句实现的是,当我设置MCinst.a = TrueMCinst.b的值将自动切换到1。但这显然没有达到预期效果,因为MCinst.b的值保持为0

我知道我可以删除if语句,然后简单地从外部修改b,就像修改a一样。但我仍然很好奇,是否有一种方法可以使工作符合我的要求,即当我更改同一实例的另一个属性时,实例的一个属性会自动更改


Tags: 实例方法falsetrueif属性myclass语句
1条回答
网友
1楼 · 发布于 2024-09-29 21:39:58
class MyClass:
    a = False
    b = 0     

    def __setattr__(self, key, value):
        if key == 'a':
            setattr(self, 'b', 1)
        super().__setattr__(key, value)

如果确实要更改class属性,可以使用

setattr(self.__class__, 'b', 1)

相关问题 更多 >

    热门问题