擅长:python、mysql、java
<p>其他的答案涵盖了继承的问题,但还没有涵盖重新绑定<code>self</code>。</p>
<p>在方法(例如<code>__init__</code>)中,<code>self</code>只是绑定到实例的本地名称。您完全可以重新绑定名称,但这只会使<code>self</code>引用其他内容。<em>它不会影响实例</em>。</p>
<p>在本例中,当<code>__init__</code>返回<code>self</code>名称超出范围时,原始实例被分配给<code>dist</code>,就好像您没有重新绑定名称<code>self</code>。</p>
<p>注意<code>__init__</code>是一个初始值设定项,而不是构造函数。Python还允许您为类(<code>__new__</code>)定义自定义构造函数,并且构造函数可以更改返回的对象。但是你不需要在这里使用它。</p>