Hi everyone I have developed the singleton implementation. However I have found a strange behaviour when using from different files. The code is attached.
Executing main new MySet object No singleton instance New singleton: <__main__.Singleton instance at 0x2b98be474a70> new MySet object There is a singlenton instance new Member new MySet object No singleton instance New singleton: <myset.Singleton instance at 0x2b98be474d88> new Member new MySet object There is a singlenton instance new Member new MySet object There is a singlenton instance I do not know why, but it creates two instances of the singleton. Does anybody know why? Regards
import myset class Member: def __init__ (self): print "new Member" self.name = "one member" instance = myset.MySet () instance.add (self)
import member class MySet: """MySet aplication""" __instance = None ## Singleton instance ## This class implements all methods of MySet class Singleton: def __init__(self): #Set the Glade file print "New singleton:" print self self.members = {} def add (self, member): self.members[member.name] = member; ####################################################### # # MYSET DELEGATES EVERYTHING IN SINGLETON METHOD # ####################################################### def __init__( self ): print "new MySet object" if MySet.__instance is None: print "No singleton instance" MySet.__instance = MySet.Singleton() else: print "There is a singlenton instance" self.__dict__['_EventHandler_instance'] = MySet.__instance def __getattr__(self, aAttr): return getattr(self.__instance, aAttr) def __setattr__(self, aAttr, aValue): return setattr(self.__instance, aAttr, aValue) ####################################################### # # MAIN CALL # ####################################################### if __name__ == "__main__": print "Executing main" set1 = MySet () set2 = MySet () mbr1 = member.Member () mbr2 = member.Member () mbr3 = member.Member ()
-- http://mail.python.org/mailman/listinfo/python-list