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

它不是很漂亮,但是您可以通过在以下位置设置首选项来抑制所有未定义的变量(和其他)错误:

Preferences -> PyDev -> Editor -> Code Analysis -> Undefined -> Undefined Variable From Import -> Ignore

或者,在每行末尾添加注释,例如:

#@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

getattrandhasattr代替怎么样?可能类似于以下内容:

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 回答