2024-09-29 00:20:33 发布
网友
比如说python
StateA = 1 StateB = 2 StateC = StateA | StateB ... instance.state = StateA
在C中,Enum中有一个HasFlag函数,它告诉我一个对象的标志是StateC的一部分
python中是否有一个等效的版本?在
现在我只能(以比特方式)思考这个问题,甚至不确定它是否有效:
测试标志:
value & flag == flag
添加标志:
清除标志:
value &= ~flag
python3.4有一个^{} data type,它has been backported。在
from enum import Enum class States(Enum): StateA = 1 StateB = 2 StateC = StateA | StateB def has_flag(self, flag): return self.value & flag.value if States.StateC.has_flag(States.StateA): print("yup, it's there!")
Python3.6有^{} data type,它也存在于the ^{}1 library:
1公开:我是Python stdlib ^{}、^{} backport和{a7}库的作者。在
HasFlag基本上是位操作。在
>>> a = 0b01 >>> b = 0b10 >>> "{0:b}".format(a | b,) '11' >>> def has_flag(v, flag): return v & flag == flag ... >>> has_flag(0b111, a) True >>> has_flag(0b111, a|b) True >>> has_flag(0b1, a|b) False
测试标志:
添加标志:
^{pr2}$清除标志:
python3.4有一个^{} data type ,它has been backported。在
Python3.6有^{} data type ,它也存在于the ^{}1 library :
^{pr2}$1公开:我是Python stdlib ^{} 、^{} backport 和{a7}库的作者。在
HasFlag基本上是位操作。在
相关问题 更多 >
编程相关推荐