<p>编辑更新的问题:</p>
<p>您可以得到的最接近的选项是下面的选项2,但是您只能指定一个值,而不能指定您想要的值(因此没有关键字参数)</p>
<p>考虑到这一点,我将坚持使用单独的<code>from_partial()</code>类方法</p>
<hr/>
<p>根据您的用例,您有两个选择:</p>
<ol>
<li>编写自己的<code>__new__</code>并为<code>_value_</code>分配一个数字,以及其他任何属性:</li>
</ol>
<pre><code> class Planet(Enum):
#
def __new__(cls, mass):
value = len(cls.__members__) + 1
member = object.__new__(cls)
member._value_ = value
member.mass = mass
return obj
#
MERCURY = 3.303e23
VENUS = 4.869e24
EARTH = 5.976e24
MARS = 6.421e23
</code></pre>
<ol start=“2”>
<li>从Python 3.6开始,您可以添加一个<code>_missing_</code>方法来代替<code>from_num</code>:</li>
</ol>
<pre><code> class Planet(Enum):
#
@classmethod
def _missing_(cls, value):
for member in cls:
if member._value_[0] == value:
return member
#
MERCURY = 1, 3.303e23
VENUS = 2, 4.869e24
EARTH = 3, 5.976e24
MARS = 4, 6.421e23
</code></pre>
<hr/>
<p>披露:我是<a href="https://docs.python.org/3/library/enum.html" rel="nofollow noreferrer">Python stdlib ^{<cd6>}</a>、<a href="https://pypi.python.org/pypi/enum34" rel="nofollow noreferrer">^{<cd7>} backport</a>和<a href="https://pypi.python.org/pypi/aenum" rel="nofollow noreferrer">Advanced Enumeration (^{<cd8>})</a>图书馆的作者</p>