如何检查位掩码是否包含位?

2024-04-24 15:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的口罩

class FLAG(IntEnum):
   DEFAULT = 0b0

以及一个与之相关的课程:

class Converter:
  def has_flag(self, val):
    return self._descriptor & val == val

我发现has_flag方法包含一个bug,因为其他每个标志都包含一个DEFAULT标志。最好的解决方法是什么? flag是互斥的。你知道吗

我找到了以下解决方案:

def has_flag(self, val):
    if val == FLAG.DEFAULT:
        return self._descriptor == val
    return self._descriptor & val == val

有没有其他方法来修复这个错误?你知道吗


Tags: 方法selfdefaultreturn标志defvalclass
1条回答
网友
1楼 · 发布于 2024-04-24 15:23:06

因为默认的0不是一个真正的标志(它是没有标志),所以应该区别对待;您提出的方法是完全合理的。你知道吗

请注意,也不能设置默认的\u ZERO标志,因为它不是标志。你知道吗

相关问题 更多 >