首頁  >  文章  >  後端開發  >  [Python]實作Python類別的公共屬性

[Python]實作Python類別的公共屬性

高洛峰
高洛峰原創
2017-02-16 11:30:441478瀏覽

背景

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:Python是基礎下一篇:Python是基礎