我有以下位掩码
class FLAG(IntEnum):
DEFAULT = 0b0
和一个处理它们的课程:
class Converter:
def has_flag(self, val):
return self._descriptor & val == val
我发现has_flag
方法包含一个错误,因为每个其他标志都包含一个DEFAULT
标志。解决这个问题的最佳方法是什么?
flag
是互斥的。
我找到了以下解决方案:
def has_flag(self, val):
if val == FLAG.DEFAULT:
return self._descriptor == val
return self._descriptor & val == val
还有其他方法可以修复该错误吗?
答案 0 :(得分:1)
由于DEFAULT_ZERO实际上并不是一个标志(它没有标志),因此需要区别对待;你建议的方式是完全合理的。
请注意,您也不能再次设置DEFAULT_ZERO标志,因为它不是标志。