时间:2021-07-01 10:21:17 帮助过:80人阅读
今天看到有人问Python的类有没有类似公共属性的特性,就是修改了某个实例的对应属性,该类的所有实例的对应属性都随之修改,想了想用了一个辅助的单例模式的类解决了问题。
修改一个实例另一个实例也跟着修改,听起来很像单例模式的特性,但又只针对一个属性,所以可以借用一个辅助的类。
class Attr(): attr = {} def __init__(self): self.__dict__ = self.attr class Myclass(): def __init__(self): self.attr = Attr() @property def value(self): return self.attr.value @value.setter def value(self, value): self.attr.value = value
In [47]: a = Myclass() In [48]: b = Myclass() In [49]: a.value = 1 In [50]: b.value Out[50]: 1 In [51]: b.value = 2 In [52]: a.value, b.value Out[52]: (2, 2)
要活用设计模式和它们的组合。
更多[Python]实现Python类的公共属性 相关文章请关注PHP中文网!