"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
只是一个奇怪的警告,到目前为止它似乎没有引起任何问题,但它是一个强烈的警告,我想摆脱它。
所以我代码中的这一行被标记为这个问题:
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