今天看到有人問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中文網!