"Serdar Tumgoren" <zstumgo...@gmail.com> wrote

Given those requirements, is the Mixin approach the way to go? Either
way, have I implemented these correctly?

I haven't looked at your code but you could use a mixin here
however I find using mixins for insantiation can bend your brain. I tend to use them for instance behavioural type things
.
Instead I would actually use a dictionary class attribute (see the thread on class attributes/methods)

The way I'd do it would be to store a dictionary of object instances (using some kind of unique name/id as key). In the constructor of each class (ie __new__() not __init__() check to see if the ID exists in the dictionary and return the object if it does. Otherwise continue as usual.

Something like this(untested pseudo code):

class A
   instances = {}
   def __new__(self, ID, *args, **kwargs):
         if ID in instances:
            return ID
   def __init__(self, *args, **kwargs):
         if ID in self.instances:
               return
         else:
               # init as usual.
   def __del__(self):
         del( self.instances[self.ID] )


The __del__ can probably be implemented in the top level class
and inherited.

HTH,


--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to