-3
私は関数にデコレータを使用したいと考えています。デコレータ関数はクラス内で定義されており、そのクラスのオブジェクトに固有のものでなければなりません。たとえば、クラスオブジェクトのメソッドを使ってpython関数をデコレートする
class Foo:
def __init__(self):
self.a = 1
def set_a(self, val):
self.a = val
def bar(func):
def _args(*args, **kwargs):
func(*args, **kwargs) + self.a
return _args
if __name__ == "__main__":
foo = Foo()
foo2 = Foo()
foo.set_a = 2
@foo.bar
def multip(a, b):
return a * b
multip(1, 2) # here i would expect answer to be 4
foo.set_a = 3
multip(1, 2) # here i would expect answer to be 5
@foo2.bar
def multip2(a, b):
return a * b
multip2(1, 2) # here i would expect the answer to be 3
あなたは「そのクラスのオブジェクトに固有」とはどういう意味ですか?あなたが持っているコードと持っているコードの違いは何ですか? ( 'bar'に' self'引数を忘れてしまったことに注意してください)。 – BrenBarn