擅长:python、mysql、java
<p>因为同样的原因,你可以设置<code>myobject.listl</code>你可以从任何地方设置任何实例上的任何属性*,<code>__init__</code>中设置的属性在任何方面都不是特别的。<code>__init__</code>唯一的特别之处在于,当创建新实例时,它会自动调用</p>
<p>这并不意味着你必须利用它,通常最好不要从类外设置这样的属性,我更喜欢有这样的方法</p>
<pre><code>def setvalues(self):
self.listl = self.getvalues()
</code></pre>
<p>差不多吧。一般来说,您需要小心,因为您有一个可变的属性,如果一些外部代码仍然持有对旧self.listl的引用呢?那么旧的列表就不会被那个代码改变了。这样就可以:</p>
<pre><code>def setvalues(self):
self.listl[:] = self.getvalues()
</code></pre>
<p>不会重新设置listl属性,而只是其中的值。但那是完全不同的讨论</p>
<p>*:有一些异常,比如用C实现的类,或者定义了<code>__slots__</code>的类,但是这些异常很少</p>