2016-02-18 39 views
1

我試圖用warnings.simplefilter來顯示我的警告一次。我創建了DeprecationWarning的子類。我嘗試將simplefilter放在與我的警告相同的模塊中,並且在封裝級別init中儘可能遠離頂端,但是它總是會在每次調用時顯示警告。在Python 3.4中測試。顯示總是而不是一次的Python警告

我的警告:

class MyDeprecationWarning(DeprecationWarning): 
    pass 

如何我打電話simplefilter:

warnings.simplefilter('once', MyDeprecationWarning) 

如何我打電話警告:

warnings.warn("Warning!", MyDeprecationWarning) 

有什麼問題?

回答

1

如果您的程序運行多次或某個代碼在單獨的進程中運行,您可能還沒有按照正確的順序發出命令。以下程序按預期工作。

import warnings 


class MyDeprecationWarning(DeprecationWarning): 
    pass 


def main(): 
    print('Program Starting') 
    warnings.simplefilter('once', MyDeprecationWarning) 
    for _ in range(100): 
     warnings.warn('Warning!', MyDeprecationWarning) 
    print('Program Finished') 


if __name__ == '__main__': 
    main() 
+0

它不是一個應用程序。它是我正在研究的一個圖書館。我試圖添加一個棄用警告,但只希望它顯示一次。 – postelrich

相關問題