Próbuję utworzyć obiekt za pomocą metody run, która zostanie opakowana za pomocą metody _wrap_run. Chciałbym móc wywołać metodę i jej wrapper, po prostu wpisując metodę instance.run() i chciałbym móc podklasować obiekt, aby można było przesłonić metodę run() i nadal wykonywać zawijanie .Metoda klasy języka Python Wrap
Mówiąc prościej, chcę, aby ludzie mogli uzyskać podklasę A i nadpisać run(), ale nadal mają wywołania metody run(), wykonaj funkcję wrapper.
Mam pewne problemy z mechaniką tego. Czy ktoś ma jakieś sugestie dotyczące tego podejścia? Dziękuje za przeczytanie.
class A:
def run(self):
print "Run A"
return True
def _wrap_run(self):
print "PRE"
return_value = self.run()
print "POST"
return return_value
run = property(_wrap_run)
a = A()
a.run()
"""
Should Print:
PRE
Run A
POST
"""
class B(A):
def run(self):
print "Run B"
return True
b = B()
b.run()
"""
Should Print:
PRE
Run B
POST
"""
Jaki jest sens "_wrap_run"? Czy to ma być jakiś dekorator? Co jest złego w korzystaniu z dekoratora? –
Nie chce ozdabiać wszystkich klas pochodnych. – agf