<h2>经验法则</h2>
<ul>
<li>一般来说,您应该避免全局变量,因为它们存在于内存中,因为您导入模块直到程序完成(第一种情况)</li>
<li>一般来说,您应该避免在函数(第二和第三种情况)内修复值,因为它使函数les可重用。</li>
</ul>
<p>而不是:</p>
<pre><code>def __init__(self):
self.url = "http://url.com"
self.icon = "icon.ico"
</code></pre>
<p>或者</p>
<pre><code>def setIcon(self):
icon = "icon.ico"
</code></pre>
<p>更喜欢:</p>
<pre><code>def __init__(self, url, icon):
self.url = url
self.icon = icon
</code></pre>
<p>或者,如果您认为这些值将是相同的90%:</p>
<pre><code>def __init__(self, url="http://url.com", icon="icon.ico"):
self.url = url
self.icon = icon
</code></pre>
<h2>何时使用每个案例的提示</h2>
<p><strong>第1种方式-定义为全局常量</strong></p>
<ul>
<li>常量具有作为模块范围常量的意义。请记住,可以在同一个模块中声明多个类和函数。这意味着常量将被用于整个模块,并且它不属于任何特定的类。</li>
<li>你需要快速找到常数,通常是为了改变它的值。在这种情况下,您可能不需要常量,而是需要变量。</li>
</ul>
<p><strong>第二种方式-定义为类的变量</p>
<ul>
<li>如果它是类的<em>变量</em>,则它不是常量。如果要使用类</em>的常量或变量<em>(在类级别而不是实例级别),则应使用第4种方式-作为类级别常量。</li>
<li>如果需要实例级常量或变量,则应使用<em>2dn经验法则</em></li>
</ul>
<p><strong>第三方-仅在将要使用的方法内定义</strong></p>
<ul>
<li>你应该避免这样做,而采用第二条经验法则</li>
</ul>
<p><strong>4路-作为类级常量</strong></p>
<ul>
<li>仅对共享同一类的所有实例的变量和常量使用建议的方法,这实际上意味着类级别</em>或类范围</em></li>
</ul>