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

高洛峰
發布: 2017-02-16 11:30:44
原創
1452 人瀏覽過

背景

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!