擅长:python、mysql、java
<p><em>进行了修改,使其更清晰。</em></p>
<p>对于您拥有的代码,您的问题是您正在使变量x和y引用类定义,而不是实例化对象,我认为这些对象现在在所有的讨论和帖子中都已成为问题。</p>
<pre><code>x = exampleClass
</code></pre>
<p>现在意味着x现在指向类定义。这很有趣,因为您将attribute1作为exampleClass的变量,所以可以执行以下操作:</p>
<pre><code>x.attribute1 = 3
</code></pre>
<p>现在,如果您执行以下操作:</p>
<pre><code>exampleClass.attribute1
</code></pre>
<p>现在你将看到3,而不是原来设置的0!</p>
<p>要实例化类的对象,需要执行以下操作:</p>
<pre><code>x = exampleClass()
y = exampleClass()
</code></pre>
<p>现在,这两个变量都在引用新对象,每个对象都有自己的属性,因此如果这样做了:</p>
<pre><code>x.attribute1 = 219
</code></pre>
<p>然后您会发现y.attribute1没有被修改:)在python中,使用类和函数的名称作为对定义的引用是很常见的。所以一定要小心,如果你想实例化一个对象,一定要用括号,如果你想调用一个函数,也一定要这样做,否则使用名称就是对定义的引用。</p>
<p>不过,我建议您阅读Ned Batchelder的答案(现在还有其他人),因为您应该使用<strong>in it</strong>函数以这种方式创建实例变量,因为它更加干净,更接近大多数遵循的设计标准。</p>
<p>但总的来说,因为它继承自对象类,所以您可以假设这样做会创建实例(带括号)等等,因此您可以修改对象值,因为我认为它们应该是实例变量,即使没有“self”。</p>