擅长:python、mysql、java
<p>传入<code>*args</code>意味着您可以初始化<code>Thief</code>类</p>
<pre class="lang-py prettyprint-override"><code>>> x = Thief(True, False)
>> x.human
False
>> x.sneaky
True
</code></pre>
<p>这很难理解,也很难用多重继承进行跟踪,但它可能很有用。维护此功能意味着您可以</p>
<pre class="lang-py prettyprint-override"><code>sneaky = (True, False, True,)
human = (True, False, False,)
thieves = [Thief(*args) for args in zip(sneaky, human)]
</code></pre>
<p>这有点做作,但我认为它说明了为什么您可能希望允许位置参数</p>
<p>如果确实要删除<code>*args</code>而不支持位置参数,则也可以通过在<code>self,</code>之后添加<code>*,</code>将其从<code>Sneaky</code>和<code>Person</code>中排除</p>
<pre class="lang-py prettyprint-override"><code>class Sneaky:
def __init__(self, *, sneaky=False, **kwargs):
super().__init__(**kwargs)
self.sneaky = sneaky
class Person:
def __init__(self, *, human=False, **kwargs):
super().__init__(**kwargs)
self.human = human
</code></pre>
<p>这不会将所有位置参数放在未命名的<code>*</code>中。如果您试图提供位置分段,这将引发<code>TypeError</code></p>