Seite 1 von 1

methode nachtraeglich eienr klasse hinzufuegen

Verfasst: Freitag 23. Februar 2007, 23:01
von Costi
halo allerseits

wie kann ich den einer klasse (noch besser waere einer instantz) nach ihrer definierung noch ein paar methoedchen anhaengen?


danke

Verfasst: Freitag 23. Februar 2007, 23:10
von mq

Code: Alles auswählen

class Foo:
    pass

def bar(self):
    print 42

def baz():
    print 23


f = Foo()
Foo.bar = bar
f.baz = baz

f.bar()
f.baz()

Verfasst: Freitag 23. Februar 2007, 23:15
von BlackJack
Bei Klassen: einfach tun, ansonsten `new.instancemethod()` um gebundene Methoden zu erzeugen.

Code: Alles auswählen

In [31]: class A(object):
   ....:     def __init__(self, value):
   ....:         self.value = value
   ....:

In [32]: a = A(42)

In [33]: def method_a(self):
   ....:     print self.value
   ....:

In [34]: A.spam = method_a

In [35]: a.spam()
42

In [36]: def method_b(self, other):
   ....:     print self.value * other
   ....:

In [37]: a.ham = new.instancemethod(method_b, a, A)

In [38]: a.ham(23)
966

Verfasst: Freitag 23. Februar 2007, 23:18
von Costi
fett!

und ich dachte das wuerde darauf hinauslaufen, dass ich die klasse als string speichern mueste und dan halt methoden manuel addieren und eval()n
:D :D :D :D