finding name of instances created
Steven Bethard
steven.bethard at gmail.com
Sun Jan 23 16:01:12 EST 2005
Michael Tobis wrote:
> I have a similar problem. Here's what I do:
>
> .def new_robot_named(name,indict=globals()):
> . execstr = name + " = robot('" + name + "')"
> . exec(execstr,indict)
>
> .class robot(object):
> . def __init__(self,name):
> . self.name = name
>
> . def sayhi(self):
> . print "Hi! I'm %s!" % self.name
>
> .if __name__=="__main__":
> . new_robot_named('Bert')
> . new_robot_named('Ernie')
> . Ernie.sayhi()
> . Bert.sayhi()
>
If you're changing the syntax from
alex = CreateRobot()
to
new_robot_named('Alex')
I don't see what you gain from using exec...
py> class robot(object):
... def __init__(self,name):
... self.name = name
... def sayhi(self):
... print "Hi! I'm %s!" % self.name
...
py> def new_robot_named(name, indict=globals()):
... indict[name] = robot(name)
...
py> new_robot_named('Bert')
py> new_robot_named('Ernie')
py> Ernie.sayhi()
Hi! I'm Ernie!
py> Bert.sayhi()
Hi! I'm Bert!
py> import new
py> temp = new.module('temp')
py> new_robot_named('Alex', temp.__dict__)
py> temp.Alex.sayhi()
Hi! I'm Alex!
That said, I do think a 'new_robot_named' function is probably a better
approach than trying to change the meaning of Python's assignment
statement...
Steve
More information about the Python-list
mailing list