Who am I: can a class instance determine its own name?

Harry George hgg9140 at cola.ca.boeing.com
Wed Mar 14 11:26:45 EST 2001


class MyName:
    #--------------------------
    def init(self,name):
        self.name=name
        try:
            raise None
        except:
            c=sys.exc_info()[2].tb_frame.f_back.f_back
        c.f_locals[name]=self
...

MyName("me")
print me.name

"Kevin Cazabon" <kevin_cazabon at hotmail.nospamplease!.com> writes:

> The reason I say it's not elegant is that there is the possibility (read
> "probability") that the assigned name and the actual name can differ.
> 
> We're assuming that the programmer assigns exactly the same name to both,
> which doesn't seem like a hard task, but it introduces the possibility of
> problems, and probably hard ones to debug too.
> 
> If there were an automatic method, it would be MUCH more reliable.
> 
> Just MHO.
> 
> Kevin.
> 
> 
> 
> "Paul Prescod" <paulp at ActiveState.com> wrote in message
> news:mailman.984324974.25480.python-list at python.org...
> | Kevin Cazabon wrote:
> | >
> | > ...
> | > You could also
> | > make it an initialization parameter.
> | >
> | > FooBar = Foo(name="FooBar")
> | >
> | > Just trying to help... not elegantly though.
> |
> | I disagree Kevin. This is not only the canonical way to give an instance
> | a name, it is also the elegant way. It gives you a lot more flexibility
> | because the name it has at runtime is unrelated to the variable name you
> | happened to have given it in your code. If you need to change one or the
> | other for any reason, you can do so safely.
> |
> |  Paul Prescod
> |
> 
> 

-- 
Harry George                E-mail:  harry.g.george at boeing.com
The Boeing Company          Renton:  (425) 237-6915
P. O. Box 3707  02-CA       Everett: (425) 266-3868
Seattle, WA 98124-2207      Page:    (425) 631-8803  



More information about the Python-list mailing list