我有课:
class MyClass:
LOOKUP = None # it is supposed to be a dictionary, but each derived class
# will prepare own version. It has to be done later.
# None value indicates that initialization is not done yet.
@classmethod
def do_smthn(cls):
if cls.LOOKUP is None:
# the LOOKUP is not initialized for this class yet, so
cls.LOOKUP = cls.prepare_lookup()
# now this class has own cls.LOOKUP dictionary, I can use it
return cls.LOOKUP[42]
pylint 抱怨:E1136:值“cls.LOOKUP”不可订阅(不可订阅对象)
嗯,我明白为什么 pylint 不高兴了。我可以在使用 LOOKUP 的每一行上禁用 pylint 警告 - 但这并不方便。
我尝试用“dict”类型注释 LOOKUP - 它没有帮助。但我还是想以某种方式告诉 pylint LOOKUP 是一本字典。
有办法吗?
您可以使用
Optional
模块中的 typing
来实现此目的。
from typing import Optional, Dict
class MyClass:
LOOKUP : Optional[Dict] = None
...