methode nachtraeglich eienr klasse hinzufuegen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

halo allerseits

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


danke
cp != mv
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

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()
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
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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
cp != mv
Antworten