python - 如果类中的值发生更改,则立即从 __call__ 返回
问题描述
每当类中调用的任何函数(func1,func2,func3)将 a 的值设置为 1 时,我都想返回主函数。谁能帮我解决这个问题?在设置值时,我需要在调用其余函数之前立即返回。我附上了一个代码片段供参考。
class Property:
def __init__(self):
## initializing the attribute
self.a = 0
def __call__(self, val):
self.func1(val)
self.func2(val)
self.func3(val)
def func1(self,value):
if value==20:
self.a = 1
return
print("all okay in func1")
def func2(self,value):
if value==40:
self.a = 1
return
print("all okay in func2")
def func3(self,value):
if value==60:
self.a = 1
return
print("all okay in func3")
def main():
obj = Property()
obj(20)
解决方案
这个怎么样?
class Property:
def __init__(self):
## initializing the attribute
self.a = 0
def set_a_to_1_and_raise(self):
self.a = 1
throw MyCustomException
def __call__(self, val):
try:
self.func1(val)
self.func2(val)
self.func3(val)
except MyCustomException:
return
def func1(self,value):
if value==20:
self.set_a_to_1_and_raise()
print("all okay in func1")
def func2(self,value):
if value==40:
self.set_a_to_1_and_raise()
print("all okay in func2")
def func3(self,value):
if value==60:
self.set_a_to_1_and_raise()
print("all okay in func3")
编辑:添加了@tdelaney 关于函数名称的好建议, self.set_a_to_1_and_raise()
以明确在您调用它时会引发异常。
推荐阅读
- java - Java Web 注入 (Vraptor) + Websphere 8.5:WELD-001408:带有限定符 @Default 的 EntityManager 类型的依赖关系不满足
- c# - 向 MultipartFormDataContent 添加键值对
- gremlin - simplePath() 中断查询
- java - 为什么在比较中使用赋值?
- java - 尝试清除程序的画布
- typescript - 枚举值的类型
- python - Python - 将缺少的元素从一个列表复制到另一个
- oracle - 向生产中的现有表添加新列
- python - 将文件保存到python中的文件夹
- javascript - 如何在 webpack 中使用 babel-loader 选择性地处理 node_modules 中的代码?