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 = nameclass Factory:
items = {}
def getItemByName(self, name):
item = Factory.items.get(name)
if not item:
item = Item(name)
Factory.items[name] = item
return itemdef 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
