"Need more values to unpack" PyCharm 中的警告

"Need more values to unpack" warning in PyCharm

只是一个奇怪的警告,到目前为止它似乎没有引起任何问题,但它是一个强烈的警告,我想摆脱它。

所以我代码中的这一行被标记为这个问题:

ultrafines_min, ultrafines_max = self.ultra_fines_limits

属性 self.ultra_fines_limits 在代码的前面声明并且来自另一个 class:

中的查找
self.ultra_fines_limits = UltraFinesLimits.values()

最后,这是 UltraFinesLimits 的 class 声明:

class UltraFinesLimits(enum.Enum):

    low_limit = 0
    top_limit = 35

    @classmethod
    def values(cls) -> Tuple[int]:
        return tuple(map(lambda c: c.value, [*cls]))

如您所见,values() 方法用于 return 一个元组,它确实如此:

(0, 35)

Process finished with exit code 0

所以我很困惑为什么会收到警告。是因为我可能在元组中有两个以上的值吗?

最终,我会说是 - 这就是您收到警告的原因。

Python 中的元组是 n-tuple,严格来说不是 2 元组。 (参见 https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences

我敢打赌这会清除警告:

ultrafines_min, ultrafines_max, _ = self.ultra_fines_limits

但更有用的是,您可能想看看 value() 函数,看看是否有更好的方法来打包您的最小值和最大值。 也许在这种情况下更明确更好?

@classmethod
def values(cls) -> Tuple[int]:
    return cls.low_limit, cls.top_limit