擅长:python、mysql、java
<p>您可以使用一个特殊的属性类来设置整数中的位。你知道吗</p>
<p>举个例子:</p>
<pre><code>class Light(property):
def __init__(self, rank):
self.rank= rank
super(Light, self).__init__(self._get, self._set)
def _get(self, signal):
return (signal.value & (1 << self.rank)) != 0
def _set(self, signal, value):
if value:
signal.value |= 1 << self.rank
else:
signal.value &= ~(1 << self.rank)
class Signal(object):
def __init__(self, value=0):
self.value = value
l1 = Light(3)
l2 = Light(2)
</code></pre>
<p>您可以简单地使用:</p>
<pre><code>>>> s = Signal()
>>> s.value
0
>>> s.l1
False
>>> s.l1 = True
>>> s.l1
True
>>> s.value
8
</code></pre>
<p>(在Python2.7和Python3.5上测试)</p>