Functions in anderen modulen neu definieren
Verfasst: Freitag 20. April 2012, 13:06
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: latin-1 -*-
import testfunc
class MyTest(object):
def SetNewFunction(self):
testfunc.TestClass = NewClass
def NewFunction(self):
print("nomöp")
class NewClass(object):
def MyNewFunc(self):
print("new")
MyTest().SetNewFunction()
testfunc.TestClass().MyNewFunc()Einmal auf Funktions probiert
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: latin-1 -*-
import testfunc
class MyTest(object):
def SetNewFunction(self):
testfunc.TestClass().MyOldFunc = self.NewFunction
def NewFunction(self):
print("nomöp")
MyTest().SetNewFunction()
testfunc.TestClass().MyOldFunc()Gibt es die Möglichkeit die functions in einer anderen class neu zu definieren ohne direkt die gesamte class ersetzen zu müssen?
Also dass ich z.b. direkt MyOldFunc(printed bisher einfach nur "old") so ersetzen kann, dass es "new" printed.
Wäre echt gut, wenn mir da jemand weiter helfen könnte^^
Edit:
Problem FAST solved
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: latin-1 -*-
class TestClass:
def OldFunc(self):
print "Hello from original method", self
def NewFunc(self):
print "Hello from NewFunc of object", self
#Getting Instancetype
instancemethod = type (TestClass.OldFunc)
#Keeping old Function as backup
OldMethode = TestClass().OldFunc
#Redefining new def :>
TestClass.OldFunc = instancemethod (NewFunc, None, TestClass)
#Calling both methods
OldMethode()
TestClass().OldFunc ()MfG DaRealFreak