_wrap_runメソッドでラップされるrunメソッドでオブジェクトを作成しようとしています。私はメソッドを呼び出すことができるようにしたいと単純にinstance.runを入力してラッパー()と私はrun()メソッドをオーバーライドすることができ、それはまだラッパーを実行するオブジェクトをサブクラス化できるようにしたいと思います。Python Wrapクラスメソッド
もっと単純に言えば、人々はAをサブクラス化してrun()をオーバーライドできますが、run()メソッドを呼び出すとラッパー関数を実行できるようにします。
私はこれの仕組みにいくつかの問題があります。誰もこのアプローチに関する提案はありますか?読んでくれてありがとう。
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