我有以下示例类:
class MyClass:
@classmethod
def method1(cls, value):
print(f'method1 called with value: {value}')
cls.method2(value)
cls.method3(value)
@classmethod
def method2(cls, value):
print(f'method2 does something with supplied value: {value}')
@classmethod
def method3(cls, value):
print(f'method3 does something with supplied value: {value}')
如你所见,这里有一个嵌套的逻辑。
method1
必须调用方法 method2
和 method3
。现在,每次调用任何方法(我有更多方法)时,我都想验证输入值。我可以定义一个类方法,然后在每个函数的开头调用 cls._verify(cls, value)
。但是,这意味着我的输入将被多次验证。
如何高效地对一组类方法(包括嵌套调用)执行输入验证,而不需要多次冗余地验证输入?
添加一个额外参数,指示
value
是否已被验证。
class MyClass:
@classmethod
def method1(cls, value, verified=False):
if not verified:
cls._verify(value)
print(f'method1 called with value: {value}')
cls.method2(value, verified=True)
cls.method3(value, verified=True)
@classmethod
def method2(cls, value, verified=False):
if not verified:
cls._verify(value)
print(f'method2 does something with supplied value: {value}')
@classmethod
def method3(cls, value, verified=False):
if not verified:
cls._verify(value)
print(f'method3 does something with supplied value: {value}')