簡體   English   中英

從Python類中停止程序

[英]Stopping a program from within a class in 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:
        command = input("Enter an option:")
        lst.command(command)

我被卡在如果命令“退出”的時候,我需要停止整個程序的運行。 我現在面臨的問題是,由於我在類外啟動了while循環,因此如何“偽造”該循環以停止整個程序?

我正在尋找一個break方法,或者也許正在創建另一個函數來完全退出程序,但不是sys()quit()方法,我猜我是不允許這樣做的。

在類中的任何地方使用sys.exit()或類似的“核”函數通常是一個壞主意。 (因此,有while True循環也是如此。)相反,讓該循環自然而優雅地中斷。

首先,您的command在收到"quit"時必須返回一個前哨。 標記的值取決於應用程序。 假設它是None

if command == 'quit': 
    return None

循環應觀察返回的值,並在返回前哨時中斷:

lst = A()
command = input("Enter an option:")
while command is not None:        
    lst.command(command)
    command = input("Enter an option:")

您可以將quit命令移到command功能之外。

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!!')

最好將quit操作與其他應用程序命令脫鈎。 您的A類不需要了解應用程序退出機制(因此可以在具有不同退出機制的其他應用程序中重用)。

我也這樣做了,所以它不會區分大小寫。 所以quitQuitQUIT都會觸發動作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM