我想用一个_wrap_run方法包装的run方法创建一个对象。我希望能够通过简单地输入instance.run()来调用方法和包装器,并且我希望能够对该对象进行子类化,以便我可以重写run()方法并让它仍然执行包装器。更简单地说,我希望人们能够继承A并重写run(),但仍然调用run()方法来执行包装函数。Python包装类方法
我对这个机制有一些困难。有没有人有关于这种方法的任何建议?谢谢阅读。
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
"""
'_wrap_run'有什么意义?这应该是某种装饰者?为此使用装饰器有什么问题? –
他不想修饰所有的派生类。 – agf