Adding method to a class on the fly
askel
dummy666 at mail.ru
Fri Jun 22 17:28:44 EDT 2007
On Jun 22, 5:17 pm, 7stud <bbxx789_0... at yahoo.com> wrote:
> On Jun 22, 2:24 pm, askel <dummy... at mail.ru> 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!')
More information about the Python-list
mailing list