擅长:python、mysql、java
<p>最好使用<code>set</code>来测试集合成员资格(您似乎正在做的事情)。在</p>
<pre><code>self.input_states = {self.PINPUT, self.PINPUTDOWN, self.PINPUTNONE}
# later
if value in self.input_states:
do_something()
</code></pre>
<p>当然,你可以用各种基本相同的方法来处理这个问题,但是无论如何,你必须对这些神奇数字中的哪些是“输入状态”进行编码。在</p>
<hr/>
<p>现在,如果如前所述,您实际想要的是基于是否设置了某个位来做一些位屏蔽或测试,那么您需要看看<a href="https://wiki.python.org/moin/BitwiseOperators" rel="nofollow noreferrer">Python bitwise operators</a>。特别是,要查看一个值是否等于其中一个值,可以使用按位and,在Python中用<code>&</code>表示。<a href="https://stackoverflow.com/a/22518491/2069350">Joran's answer</a>很好地涵盖了这种用法,但基本思想是:</p>
^{pr2}$
<p>或者如果所有这些输入值都触发相同的操作:</p>
<pre><code>if any(value & p for p in (self.PINPUT, self.PINPUTDOWN, self.PINPUTNONE)):
do_something()
</code></pre>