Am 12.09.2012 04:28 schrieb j.m.dagenh...@gmail.com:
I'm trying to call SetName on an object to prevent me from ever having to call 
it explictly again on that object. Best explained by example.


def setname(cls):
     '''this is the proposed generator to call SetName on the object'''
     try:
         cls.SetName(cls.__name__)
     finally:
         yield cls


class Trial:
     '''class to demonstrate with'''
     def SetName(self, name):
         print 1, 1

@setname
class Test(Trial):
     '''i want SetName to be called by using setname as a decorator'''
     def __init__(self):

         print 'Yay! or Invalid.'

if __name__ == '__main__':
     test = Test()


How can i fix this?

I am not sure what exactly you want to achieve, but I see 2 problems here:

1. Your setname operates on a class, but your SetName() is an instance function.

2. I don't really understand the try...finally yield stuff. As others already said, you probably just want to return. I don't see what a generator would be useful for here...

def setname(cls):
     '''this is the proposed generator to call SetName on the object'''
     try:
         cls.SetName(cls.__name__)
     finally:
         return cls

and

class Trial(object):
    '''class to demonstrate with'''
    @classmethod
    def SetName(cls, name):
        print 1, 1

should solve your problems.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to