Steven D'Aprano wrote:
I would like to generate a new object each time I import a name from a module, rather than getting the same object each time. For example, currently I might do something like this:

# Module
count = 0
def factory():
    # Generate a unique object each time this is called
    global count
    count += 1
    return "Object #%d" % count


# Calling module
from Module import factory
a = factory()  # a == "Object #1"
b = factory()  # b == "Object #2"
del factory


I'm looking for a way to hide the generation of objects from the caller, so I could do something like this:

from Module import factory() as a  # a == "Object #1"
from Module import factory() as b  # b == "Object #2"

except of course that syntax is illegal.


Why making standard statements do what they're not meant to do ?

You could write
>import Module
>
>a = factory()
>b = factory()
But you already know that.


So what's the purpose of making

from Module import factory as a
from Module import factory as b

return 2 different objects ? If I had to write this code I would expect 'a is 
b' to return 'True'.

This is no "don't do that" answer, it's a sincere question: what is the benefit of your /new/ syntax ?

JM
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to