簡短版本:如果我定義一個裝飾器來在運行時導入一個模塊並在func_globals
中聲明一個方法,我該如何告訴Pylint已經定義了結果變量?如何告訴pylint變量將在運行時定義?
龍版本:請看下面的例子:由於with_import
裝飾爲create_array
函數聲明numpy
from importlib import import_module
def with_import(module):
modname = module.split('.')[-1]
def decorate(func):
def wrapper(*args, **kwargs):
func.func_globals[modname] = import_module(module)
return func(*args, **kwargs)
return wrapper
return decorate
@with_import('numpy')
def create_array(n):
return numpy.empty(n)
print(create_array(5))
此代碼的工作就好了。但是,當我運行PyLint我看到
E: 16,11: Undefined variable 'numpy' (undefined-variable)
有沒有辦法告訴Pylint這個變量實際上將在運行時定義?我真的不想爲整個模塊禁用unused-variable
檢查,以防有人在以後實際聲明瞭一個未使用的常規變量。
你能解釋一下你爲什麼要這樣做?這真的不是很好。 –
'with_import'裝飾器在生產模塊中用於在運行時導入可選的依賴項,並引用調用函數的錯誤消息。我可以將它放入一個函數中,並在相關方法的第一行調用它,但裝飾器看起來更優雅(當時)。 –