Frans Englich wrote:
Hello,
I am having trouble with throwing class instances around. Perhaps I'm approaching my goals with the wrong solution, but here's nevertheless a stripped down example which demonstrates my scenario:
[snip]
The basic problem seems to be that you're trying to avoid creating a new instance in __init__--which is too late. By that point, the new object is already created. Rebinding the name self in __init__ doesn't do what you seem to think it will. Basically, you need to move the "only create this object if it doesn't already exist" logic outside of __init__.
Here's an alternative approach:
#!/usr/bin/env python
class Item: def __init__(self, name): self.name = name
class Factory:
items = {} def getItemByName(self, name): item = Factory.items.get(name) if not item: item = Item(name) Factory.items[name] = item return item
def main(): factory = Factory() name = 'foo' for x in range(10): i = factory.getItemByName(name) print i print len(factory.items)
if __name__ == "__main__": main()
-- http://mail.python.org/mailman/listinfo/python-list