ここでは、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
on を 1 回呼び出した後AddressCellAttr
、singleton メソッドはすべてのサブクラスでも同じオブジェクトを返します。なぜこれが起こるのですか?