【发布时间】:2012-12-13 02:46:12
【问题描述】:
这是一个例子。
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()
但我认为这不是一个好习惯,我想在我的类中定义检查方法。
【问题讨论】:
-
我不清楚你在问什么。你能改写一下,或者提供一个例子吗?
-
你的问题还不清楚。您的第一个代码示例不包括任何装饰器的使用。你想用什么作为装饰器,如果它不起作用,会发生什么?你有错误吗?如果是这样,什么错误?显示产生该错误的实际代码。
-
所以你想在一个(或多个)成员方法的类中使用装饰器?如果是这样,我明白你想要什么,我不明白你为什么想要它?这没有令人信服的理由。
class是一个整洁的容器,你不需要装饰器作为类的方法,你可以从另一个方法调用一个方法。这是不是被decorators冲昏了头脑?
标签: python