Estoy tratando de crear un objeto con un método de ejecución que estará envuelto por un método _wrap_run. Me gustaría poder llamar al método y a su envoltorio simplemente escribiendo instance.run() y me gustaría poder subclasificar el objeto para poder anular el método run() y hacer que siga ejecutando el contenedor .Método de clase Python Wrap
Más simplemente, quiero que la gente sea capaz de subclase A y anular run(), pero todavía tienen las llamadas al método run() ejecutar la función de contenedor.
Tengo algunas dificultades con la mecánica de esto. ¿Alguien tiene alguna sugerencia con respecto a este enfoque? Gracias por leer.
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
"""
¿Cuál es el punto de '_wrap_run'? ¿Se supone que es una especie de decorador? ¿Qué hay de malo con usar un decorador para esto? –
Él no quiere tener que decorar todas las clases derivadas. – agf