2

受講しているコースのPythonコードがいくつかあり、特定の機能のサポートをテストするファイルの一部にエラーがあり、機能が存在しない場合はそれらを使用しようとしません。私の場合、利用できる機能がないので、条件付きの後のコードは実行されるべきではありません。

これらのセクションは、コードに実際に到達した場合にランタイムエラーとして表示されるべきではありません。

例えば:

def __call__(self, *args):
    if not 'SIGALRM' in dir(signal):
        return self.function(*args)
    old = signal.signal(signal.SIGALRM, self.handle_timeout)
    signal.alarm(self.timeout)
    try:
        result = self.function(*args)
    finally:
        signal.signal(signal.SIGALRM, old)
    signal.alarm(0)
    return result

本文にUndefined variable from import: SIGALRM、などのエラーが発生しますが、サポートされていないUndefined variable from import: alarm場合はメソッドが返されます。SIGALRM

これらのセクションのエラーを抑制する方法はありますか?

4

2 に答える 2

0

きれいではありませんが、次のように設定することで、未定義の変数(およびその他の)エラーをすべて抑制することができます。

環境設定->PyDev->エディター->コード分析->未定義->インポートからの未定義変数->無視

または、次のように各行の最後にコメントを追加します。

#@UnresolvedImport

#@UnusedVariable

オートコンプリートでテストできる他にも、自明のはずです。

質問のコードのエラーを選択的に抑制する方法は次のとおりです。

def __call__(self, *args):
    if not 'SIGALRM' in dir(signal):
        return self.function(*args)
    old = signal.signal(signal.SIGALRM, self.handle_timeout) #@UndefinedVariable
    signal.alarm(self.timeout) #@UndefinedVariable
    try:
        result = self.function(*args)
    finally:
        signal.signal(signal.SIGALRM, old) #@UndefinedVariable
    signal.alarm(0) #@UndefinedVariable
    return result
于 2012-10-13T19:00:06.420 に答える
0

代わりに使っgetattrてみませんか?hasattrたぶん次のようなものです:

def __call__(self, *args):
    if not hasattr(signal, 'SIGALRM'):
        return self.function(*args)

    sigalrm = getattr(signal, 'SIGALRM')
    alarm = getattr(signal, 'alarm')

    old = signal.signal(sigalrm, self.handle_timeout)
    alarm(self.timeout)
    try:
        result = self.function(*args)
    finally:
        signal.signal(sigalrm, old)
    alarm(0)
    return result
于 2012-10-13T20:51:02.307 に答える