擅长:python、mysql、java
<p>在这个例子中,(b)作为成员函数不是很有用。它可以很容易地成为一个自由函数:</p>
<pre><code>def square(input_var):
return input_var ** 2
</code></pre>
<p>这无疑是一个更好的接口,因为它可以在任何上下文中使用,而不仅仅是来自<code>ClassB</code>的实例。在</p>
<p>一般来说,如果我知道<code>self.variable_a</code>是函数需要的唯一输入,我会使用(a)。如果我想让它和任何东西一起工作,并且它不依赖于类中的任何东西,我会让它成为一个自由函数。如果我想让它处理任何事情,但它依赖于某个类状态,那么让它成为一个以输入为参数的成员。举个例子,如果<code>ClassA</code>同时包含<code>variable_a</code>和<code>variable_b</code>怎么办?您不能使用<code>square_a</code>来修改<code>variable_b</code>,这取决于实际的用例。在</p>
<blockquote>
<p>Furthermore, is it taboo to set an instance variable outside of the <strong>init</strong> method? </p>
</blockquote>
<p>不,但通常最好确保所有成员都在类实例化时的某个地方初始化。即使您只是将成员初始化为<code>None</code>。检查一个成员变量是否是<code>None</code>要比试图确定是否定义它要容易得多。在</p>
<p>编辑:还有几个例子:</p>
^{pr2}$