On Jun 22, 2:28 pm, askel <[EMAIL PROTECTED]> wrote: > On Jun 22, 5:17 pm, 7stud <[EMAIL PROTECTED]> wrote: > > > > > On Jun 22, 2:24 pm, askel <[EMAIL PROTECTED]> wrote: > > > > class Dummy: > > > def method(self, arg): > > > print arg > > > > def method2(self, arg): > > > self.method(arg) > > > > Dummy.method2 = method2 > > > Dummy.method2('Hello, world!') > > > Traceback (most recent call last): > > File "test1.py", line 8, in ? > > Dummy.method2('Hello, world!') > > TypeError: unbound method method2() must be called with Dummy instance > > as first argument (got str instance > > instead) > > > >I like that to be the same as: > > > >class Dummy: > > > def __init__(self): > > > return > > > > def method_dynamic(self): > > > return self.method_static("it's me") > > > > def method_static(self, text): > > > print text > > > return > > > >so that I can do: > > > >dum=Dummy.method_dynamic() > > > >and see "it's me" printed. > > > When are you able to see that? > > there is no way to call instance method from static one. but in your > case you can make something like: > > class Dummy: > @staticmethod > def method(arg): > print arg > > def method2(arg): > Dummy.method(arg) > > Dummy.method2 = staticmethod(method2) > Dummy.method2('Hello, world!') > > - OR - > > def method2(cls, arg): > cls.method(arg) > > Dummy.method2 = classmethod(method2) > Dummy.method2('Hello, world!')
Thanks for the response. The above doesn't exactly do I what need. I was looking for a way to add method to a class at run time. What does work, is to define an entire sub-class at run time. Like: class DummyParent: def __init__(self): return def method_static(self, text): print text return text = "class Dummy(DummyParent):" text += "\n\t" + "def __init(self):" text += "\n\t" + "\tDummyParent.__init__(self)" text += "\n\t" + "def method_dynamic(self):" text += "\n\t" + "\tself.method_static(\"it's me\")" exec text dum=Dummy().method_dynamic() Thanks again. -- http://mail.python.org/mailman/listinfo/python-list