如何解决Python:操作方法:实例属性取决于标志,而标志本身就是该实例/对象的属性
请考虑以下最小示例:
class MyClass:
a = False
b = 0
if a:
b = 1
MCinst = MyClass()
此处MCinst
具有两个属性,MCinst.a
和MCinst.b
,其默认值分别为False
和0
。我试图通过if
语句实现的是,当我设置MCinst.b
时,1
的值将自动切换为MCinst.a = True
。但这显然不符合预期,因为MCinst.b
的值保持为0
。
我知道我可以删除if
语句,而从外面修改b
,就像修改a
一样。但是我仍然好奇是否有一种方法可以使我想要的工作-即当我更改同一实例的另一个属性时,实例的属性会自动更改。
解决方法
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__,1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。