背景
今天看到有人问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)
感想
要活用设计模式和它们的组合。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。