python 退出程序的推荐方式

python recommended way for exiting program

这是一道非常基础的设计题。如果不满足某些条件,我的程序需要退出。我有一个class A。下面显示的方法 main_logic 具有控制指令。此方法创建多个实例并调用在这些实例上定义的一些方法。我正在展示一个这样的例子,它创建对象 b = CalcB() 然后调用 b.run()。

b.run() 中,我有条件地退出 update_val 中的代码。 main_logic 也负责调用其他代码。

我的问题是

  1. 从一些支持代码(在本例中是 CalcBupdate_val 退出程序是否是一种可接受的做法?或者我应该总是 return 一些错误代码并在内部执行此操作main_logic?
  2. 有没有更好的设计来处理这种情况?一些错误处理示例 class?任何优雅解决方案的插图将不胜感激

    import sys
    class Shelf:
       def get_factor(self):
           self.some_factor = 0.5
           return self.some_factor
    
    class CalcB:
       def __init__(self):
           self.shelf = Shelf()
           self.ref = 1.0
           self.area = 3.14285
    
       def run(self):
           print("Calculation B running")
           some_factor = self.shelf.get_factor()
           self.update_val(some_factor)
    
       def update_val(self, some_factor):
           self.value = some_factor*self.area
           if (self.value > self.ref):
               print("too bad.. exiting the program")
               sys.exit() 
    
    class A: 
       def main_logic(self):
           b = CalcB()
           b.run()
           # some more code follows...
           #do_something()
           #d = CalcD()
           #do_something_else(d)                       
    
    if __name__ == "__main__":
        a = A()
        a.main_logic()
    

为了使您的代码可重用,不应强制调用代码的行为。标准解决方案是引发异常,并让您的主程序在出现该异常时退出。

class ClassAException(Exception):
    pass

class ClassA (object):
    def method:
        if situation not in stuff_I_can_handle:
            raise ClassAException('Cannot handle ' +repr(situation))

我不确定你的第二个问题。您知道如何处理的情况可能应该当场处理。例外情况适用于您不准备处理的情况。