Is it possible to define a class in such a way, that if twice an
object is made with the same initialization parameters, the same
object is returned in both cases?

More specifically, suppose I have the following program:

class myObj(object):
    def __init__(self,a):
        self._a = a
        self._seen = 0
    def touch(self):
        self._seen += 1
    def count(self):
        return self._seen

x = myObj("a")
y = myObj("a")
z = myObj("b")
x.touch()

After this, x._seen will return 1, but y._seen and z._seenwill return
0. I would like the definition of the myObj class to be such that
after these definitions x and y refer to the same object, but z to a
different one.

If there is not such possibility, does anyone have a better or more
elegant workaround than the one I am using, which is:

class myObj(object):
    def __init__(self,a):
        self._a = a
        self._seen = 0
    def touch(self):
        self._seen += 1
    def count(self):
        return self._seen

def obj(a):
    try:
        return objects[a]
    except KeyError:
        objects[a] = myObj(a)
        return objects[a]

objects = {}
x = obj("a")
y = obj("a")
z = obj("b")
x.touch()



--
Andre Engels, [EMAIL PROTECTED]
ICQ: 6260644  --  Skype: a_engels
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to