擅长:python、mysql、java
<p>根据<a href="https://docs.python.org/3.9/library/enum.html#module-enum" rel="nofollow noreferrer">the docs</a>:</p>
<blockquote>
<p>An enumeration is a set of symbolic names (members) bound to <em>unique</em>, constant values.</p>
</blockquote>
<p>因此,指向相同值的名称将被视为彼此的别名。另见<a href="https://docs.python.org/3.9/library/enum.html#duplicating-enum-members-and-values" rel="nofollow noreferrer">https://docs.python.org/3.9/library/enum.html#duplicating-enum-members-and-values</a>:</p>
<blockquote>
<p>Given two members A and B with the same value (and A defined first), B is an alias to A. By-value lookup of the value of A and B will return A. <em>By-name lookup of B will also return A.</em></p>
</blockquote>
<p>在您的例子中,<code>EAX</code>是首先定义的,并且具有与<code>EBX</code>相同的值,因此<code>EBX</code>的查找提供了<code>EAX</code></p>
<p>至于如何让它像您期望的那样工作:不可能,因为enum<em>不会像这样工作</p>
<p>当然,您可以创建如下映射:</p>
<pre><code>SIZES = {OperandType.EAX: 32, OperandType.EBX: 32}
</code></pre>
<p>…然后通过<code>SIZES[OperandType.EAX]</code>查询大小</p>