On Wed, Sep 12, 2012 at 4:22 AM, pyjoshsys <j.m.dagenh...@gmail.com> wrote: > The output is still not what I want. Now runtime error free, however the > output is not what I desire.
[SNIP] > class Trial(object): > '''class to demonstrate with''' > def __init__(self): > object.__init__(self) > self.name = None > > @classmethod > def SetName(cls, name): > cls.name = name [SNIP] > if __name__ == '__main__': > test = Test() > print 'instance' > print '', test.name #should be Test > print 'class' > print '', Test.name > > > The output is: python decors2.py > instance > None > class > Test > > I want: > instance > Test > class > Test > > Is this possible in this manner? The SetName class method sets the name on the *class* dictionary. The class's __init__ method also sets a name (None) on the *instance* dictionary. From an instance's perspective, the instance dictionary will shadow the class dictionary. If you remove the attribute from the instance dictionary entirely (delete the "self.name = None" line), and leave the class dictionary as is, then you will get the output you want (although from your later post I am not certain that this is the behaviour you want). On Wed, Sep 12, 2012 at 5:15 AM, pyjoshsys <j.m.dagenh...@gmail.com> wrote: > so decorators only pass the object and not any instance of the object as the > implied argument? Is this right? Right. > The idea was to use @setname instead of instance.SetName(instance.__name__). The appropriate place to do this so that it applies to all instances of the class rather than to the class would be inside the __init__ method. Also, instances don't have a __name__ attribute, so it's still unclear to me what you're looking for. Did you mean the effect to be that of "instance.SetName(cls.__name__)"? If so, then the decorator approach (with the line "self.name = None" removed) should be fine for your purposes -- you'll just have the name stored in the class dict instead of in each instance dict, but it will still be visible as long as you haven't shadowed it. -- http://mail.python.org/mailman/listinfo/python-list