擅长:python、mysql、java
<p>作为对<em>非常</em>的简要回顾,<code>self</code>是指类的当前实例,而<code>cls</code>变量附加到类itelf,即在每个实例之间共享。这里有一些参考资料可以帮助解决这个问题,以及我是如何得到你的解决方案的:</p>
<ul>
<li><a href="https://stackoverflow.com/a/25577642/5557662">https://stackoverflow.com/a/25577642/5557662</a></li>
<li><a href="https://docs.python.org/3/reference/datamodel.html" rel="nofollow noreferrer">Python datamodel docs</a></li>
</ul>
<p>我修改了您的示例代码以说明差异,并包含了一个解决方案:</p>
<pre><code>class MyClass:
__var2 = 'var2'
var3 = 'var3'
def __init__(self):
self.__var1 = 'var1'
def normal_method(self):
print self.__var1
@classmethod
def class_method(cls):
print cls.__var2
def my_method(self):
print self.__var1
print self.__var2
print self.__class__.__var2
if __name__ == '__main__':
print MyClass.__dict__['var3']
clzz = MyClass()
clzz.my_method()
</code></pre>
<p><code>__var2</code>和{<cd4>}是保存到类中的变量。您可以通过代表名称空间的<code>__dict__</code>来访问没有实例的任何类变量。在</p>
<p>由于类变量成为每个实例的一部分,您只需调用<code>self</code>来访问它们。或者,您可以显式地调用<code>self.__class__.__var2</code>,以明确预期变量实际存储在何处。在</p>