我遇到了Borg design,認爲它適合我在做的事情,但是在使用時我得到DeprecationWarning
(我目前使用的是Python 2.6,但會移動到不久的將來更新版本)。Borg新款式的設計
在評論中發現的新的風格的版本是:
class Borg(object):
_state = {}
def __new__(cls, *p, **k):
self = object.__new__(cls, *p, **k)
self.__dict__ = cls._state
return self
然而,創建帶有參數的實例時給出了DepricationWarning
:
DepricationWarning: object.__new__() takes no parameters
是否有使用博格設計的方式沒有使用帶參數的object.__new__()
?
「認爲這會適合我在做什麼「?爲什麼?你有什麼目的? 99%的時間您可以更簡單地使用全局模塊。 –
單身只不過是一種創建全局變量的方式,就像您正在創建一個類的新實例一樣,爲了讓其他開發人員(稍後自己將其引入)將錯誤引入到您的軟件中,可以將其混淆。我以前從來沒有聽說過博格,但它似乎只是更多。只需定義你的類,然後直接將它實例化成一個全局模塊。所有對全球的引用將共享狀態。魔法! – Ben
我正在擴展一個類(不是我的),因爲這個項目只能被允許擁有一個類。做了一些研究,我偶然發現了問題中的鏈接,並認爲我會試試它而不是Singleton。老實說,我沒有想到將模塊用作「單身人士」。這會比使用博格容易嗎? – TorelTwiddler