在Python中从类中停止程序
假设我有一门课:在Python中从类中停止程序,python,Python,假设我有一门课: class A: def command(self, input): if command == 'test1': do something... if command == 'quit': #stop the program 在类外,我启动一个while循环: if __name__ == "__main__" lst = A() while True: com
class A:
def command(self, input):
if command == 'test1':
do something...
if command == 'quit':
#stop the program
在类外,我启动一个while循环:
if __name__ == "__main__"
lst = A()
while True:
command = input("Enter an option:")
lst.command(command)
如果命令是“退出”,我需要停止整个程序的运行。我现在面临的问题是,既然我在类外启动了一个while循环,我如何“假”循环以停止整个程序
我正在寻找一个break方法,或者创建另一个函数来完全退出程序,但不是sys()
或quit()
方法,我猜我不允许这样做。在类中的任何地方使用sys.exit()
或类似的“核心”函数通常是个坏主意。(如果是while True
循环也是如此。)相反,让循环自然而优雅地中断
首先,您的命令
在收到的“退出”
命令时必须返回一个哨兵。sentinel的值取决于应用程序;假设它是无
:
if command == 'quit':
return None
循环应监视返回的值,并在sentinel返回时中断:
lst = A()
command = input("Enter an option:")
while command is not None:
lst.command(command)
command = input("Enter an option:")
在类中的任何位置使用sys.exit()
或类似的“核心”函数通常是个坏主意。(如果是while True
循环也是如此。)相反,让循环自然而优雅地中断
首先,您的命令
在收到的“退出”
命令时必须返回一个哨兵。sentinel的值取决于应用程序;假设它是无
:
if command == 'quit':
return None
循环应监视返回的值,并在sentinel返回时中断:
lst = A()
command = input("Enter an option:")
while command is not None:
lst.command(command)
command = input("Enter an option:")
您可以将quit命令移到
命令
函数之外
class A:
def command(self, inp):
pass
if __name__ == "__main__":
lst = A()
while True:
cmd = input("Enter an option: ")
if cmd.lower() == 'quit':
break
else:
lst.command(cmd)
print('thanks bye!!')
通常最好将退出操作与其他应用程序命令分离。你的A
类不需要知道应用程序退出机制(因此可以在具有不同退出机制的其他应用程序中重用)
我也这样做,它将不区分大小写。因此,
退出
,退出
或退出
都将触发该操作。您可以将退出命令移到命令
功能之外
class A:
def command(self, inp):
pass
if __name__ == "__main__":
lst = A()
while True:
cmd = input("Enter an option: ")
if cmd.lower() == 'quit':
break
else:
lst.command(cmd)
print('thanks bye!!')
通常最好将退出操作与其他应用程序命令分离。你的A
类不需要知道应用程序退出机制(因此可以在具有不同退出机制的其他应用程序中重用)
我也这样做,它将不区分大小写。因此,退出
,退出
或退出
都将触发该操作