如何将 pylint 与可选对象一起使用

问题描述 投票:0回答:1

我有课:

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 是一本字典。

有办法吗?

python pylint
1个回答
0
投票

您可以使用

Optional
模块中的
typing
来实现此目的。

from typing import Optional, Dict
    
class MyClass:
    LOOKUP : Optional[Dict] = None
    ...
© www.soinside.com 2019 - 2024. All rights reserved.