2015-03-31 45 views
7

我試圖標記一個函數爲廢棄,以便調用它的腳本運行到正常完成,但被PyCharm的靜態代碼檢查捕獲。 (有這個廢棄警告一些其他的問題,但我認爲他們早Python 2.6中,當我認爲基於類的例外情況進行了介紹。)如何在Python 2.7中提升DeprecationWarnings?

這是我有:

class Deprecated(DeprecationWarning): 
    pass 

def save_plot_and_insert(filename, worksheet, row, col): 
    """ 
    Deprecated. Docstring ...<snip> 
    """ 

    raise Deprecated() 

    # Active lines of 
    # the function here 
    # ... 

我的理解是,棄用的警告應該允許代碼運行,但是當調用該函數時,該代碼示例實際上會停止。當我從函數體中刪除「raise」時,代碼會運行,但PyCharm不會將該函數調用標記爲已棄用。

什麼是Pythonic(2.7.x)標記功能的方式已被棄用?

+0

使用一個裝飾? – 2015-03-31 21:05:13

回答

14

你不應該raise DeprecationWarning(或一個子類),因爲那樣你仍然在引發一個實際的異常。

而是使用warnings.warn

import warnings 
warnings.warn("deprecated", DeprecationWarning) 

https://docs.python.org/2/library/warnings.html#warnings.warn

+0

謝謝!正是我在找的東西。腳本現在運行,但PyCharm觸發了函數調用。我被從Exceptions繼承的Warnings誤導了:https://docs.python.org/2/library/exceptions.html#exception-hierarchy – Beachcomber 2015-03-31 21:19:58

+0

@Beachcomber:PyCharm觸發了函數調用,因爲您標記爲不推薦使用。該功能仍然有效,但它的明顯標記,所以你知道改變你的代碼不使用它。 – 2016-09-03 21:52:20