Ich versuche, etwas vor oder nach einer Eigenschaft zu tun ist, erhalten oder/und setzen. Der schwierige Teil dieses Codeabschnitts ist, dass ich die ursprüngliche Klasse nicht ändern kann.Wrap erhalten und setzen Sie Attribute Methoden ohne Bearbeitung der ursprünglichen Klasse
Kein Problem für die Methode der Klasse, es funktioniert wie erwartet. Aber ich kann keinen Weg finden, mit Eigenschaften umzugehen. Ich habe einen Fehler:
TypeError: readonly attribute
Wenn mir jemand helfen könnte, in die richtige Richtung zu finden ...
Dies ist die Klasse I kann nicht geändert werden:
class Test(object):
def __init__(self):
super(Test, self).__init__()
self._param = None
self._controler = None
self._message = None
@property
def param(self):
return self._param
@param.setter
def param(self, param):
self._param = param
@property
def controler(self):
return self._controler
def message(self):
print('message')
Dies ist der Wrapper Ich schrieb zu machen der Job, das wird Teil meines Moduls sein
def add_things_before_and_after(function_to_enhance):
def new_wrapper(self):
print("Before function execution")
function_to_enhance(self)
print("After function execution")
return new_wrapper
Dies ist der Code zu schreiben, um den Wrapper und insta zu verwenden nciate der Klasse
# this one works as expected
Test.message = add_things_before_and_after(Test.message)
# these two lines does not work
Test.param.fget = add_things_before_and_after(Test.param.fget)
Test.controler.fget = add_things_before_and_after(Test.controler.fget)
test = Test()
test.message()
test.param = 1
print(test.param)
print(test.controler)
Vielen Dank @kofrasa –
Sie sind herzlich willkommen @ reno. Glückliche Kodierung! – kofrasa