首先,我不知道这是不是正确的方法。我想编写一个decorator类,它将与其他类的方法一起使用。在运行该方法之前,我想检查是否所有必需的类变量都已初始化。理想的情况是这样的:
class Test(object):
def __init__(self, f):
self.f = f
# some magic
def __call__(self):
self.f.magically_get_variable(required)
# do some checks and execute method or throw an exception
class Data(object):
def __init__(self, a, b):
self.a = a
@test
def sum(self):
required('self.a', 'self.b')
return self.a + self.b
如果这不是应该这样做,请告诉我如何正确地做。在
如果您坚持在装饰方法的主体开始之前检查,以下是一种合理的方法…:
正如你所希望的那样
^{pr2}$我认为decorator在这里有点不适合用来检查变量是否存在。在
想一想如果没有提供所需的变量,您将要做什么:引发一个异常(它在您的注释中)。在
我会说(根据上面的代码):
如果self.a或self.b没有提供,让它失败(它将引发一个
NameError
异常,如果您愿意,您可以捕获它,如果您想的话,您可以自己引发它。)相关问题 更多 >
编程相关推荐