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

Reply via email to