在這裏,我繼承了一個wxPython類並定義了一個名爲singleton
的類方法。如何實現子類單例?
class AddressCellAttr(wx.grid.GridCellAttr):
_instance = None
def __init__(self):
wx.grid.GridCellAttr.__init__(self)
self.SetTextColour('#0000FF')
@classmethod
def singleton(cls):
if cls._instance == None:
cls._instance = cls()
return cls._instance
class ValidAddressCellAttr(AddressCellAttr):
def __init__(self):
AddressCellAttr.__init__(self)
self.SetTextColour('#00FF00')
class CorrectedAddressCellAttr(AddressCellAttr):
def __init__(self):
AddressCellAttr.__init__(self)
self.SetTextColour('#FFFF00')
class InvalidAddressCellAttr(AddressCellAttr):
def __init__(self):
AddressCellAttr.__init__(self)
self.SetTextColour('#FF0000')
class UnparsableAddressCellAttr(AddressCellAttr):
def __init__(self):
AddressCellAttr.__init__(self)
self.SetTextColour('#555555')
其餘的類是第一個子類的子類。我認爲singleton類方法對所有的子類都有效,因爲它在類上運行,而子類實際上是一個單獨的類。
發生什麼事情是,我在AddressCellAttr
上調用singleton
一次後,單例方法也會在所有子類上返回同一個對象。爲什麼會發生?
-1對公然和無償虐待單身人士,並試圖讓我們幫助你造成這個世界上的怪物。 – cHao
@cHao:請閱讀我在sr2222的回答中寫下的最新評論,除非您能向我解釋解決問題的更好方法,而不是使用單身問題,否則請刪除否定的投票。 – Hubro