python 退出程序的推荐方式
python recommended way for exiting program
这是一道非常基础的设计题。如果不满足某些条件,我的程序需要退出。我有一个class A
。下面显示的方法 main_logic
具有控制指令。此方法创建多个实例并调用在这些实例上定义的一些方法。我正在展示一个这样的例子,它创建对象 b = CalcB()
然后调用 b.run()。
在 b.run()
中,我有条件地退出 update_val
中的代码。 main_logic
也负责调用其他代码。
我的问题是:
- 从一些支持代码(在本例中是
CalcB
的 update_val
退出程序是否是一种可接受的做法?或者我应该总是 return 一些错误代码并在内部执行此操作main_logic?
有没有更好的设计来处理这种情况?一些错误处理示例 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))
我不确定你的第二个问题。您知道如何处理的情况可能应该当场处理。例外情况适用于您不准备处理的情况。
这是一道非常基础的设计题。如果不满足某些条件,我的程序需要退出。我有一个class A
。下面显示的方法 main_logic
具有控制指令。此方法创建多个实例并调用在这些实例上定义的一些方法。我正在展示一个这样的例子,它创建对象 b = CalcB()
然后调用 b.run()。
在 b.run()
中,我有条件地退出 update_val
中的代码。 main_logic
也负责调用其他代码。
我的问题是:
- 从一些支持代码(在本例中是
CalcB
的update_val
退出程序是否是一种可接受的做法?或者我应该总是 return 一些错误代码并在内部执行此操作main_logic? 有没有更好的设计来处理这种情况?一些错误处理示例 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))
我不确定你的第二个问题。您知道如何处理的情况可能应该当场处理。例外情况适用于您不准备处理的情况。