重複の可能性:
クラスメソッドをデコレータにすることはできますか?
ここに例があります。
class myclass:
def __init__(self):
self.start = False
def check(self):
return not self.start
def doA(self):
if self.check():
return
print('A')
def doB(self):
if self.check():
return
print('B')
ご覧のとおり、デコレータ方式でチェックアクションを記述したいのですが、何度も試した結果、クラス外でしかメソッドを記述できないことがわかりました。クラス内での記述方法を教えてください。ありがとうございます。
編集:
私はこのようにコードを書くことができます:
def check(func):
def checked(self):
if not self.start:
return
func(self)
return checked
class myclass:
def __init__(self):
self.start = False
@check
def doA(self):
print('A')
@check
def doB(self):
print('B')
a = myclass()
a.doA()
a.doB()
a.start = True
a.doA()
a.doB()
しかし、それは良い習慣ではないと思います。クラス内でcheckメソッドを定義したいと思います。