首页 > 解决方案 > 如果类中的值发生更改,则立即从 __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)

标签: pythonfunctionclassself

解决方案


这个怎么样?

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()以明确在您调用它时会引发异常。


推荐阅读