python和其他程序不同,在类中定义的变量是所有类实例共享的。以java为例,python在class中直接定义的变量相当于static变量。
下面是测试代码:
class MyData:
classDatas = [] # 相当于Java中通过static来定义
def __init__(self, name, idx):
self.objectDatas = [] # 这里定义的是实例的变量,每个实例不同
self.objectDatas.append((name, idx))
self.classDatas.append((name, idx)) # 也可用MyData.方式访问
print("注意观察:MyData每次实例化一个,但是objectDatas和classDatas的内容并不同")
print("python和其他程序不同,以java为例,python在class中直接定义的变量相当于static变量")
for i in range(4):
a = MyData('名称%s' % i, i)
print(' objectDatas=%s,\tclassDatas=%s' % (a.objectDatas , a.classDatas))
print(' \t\t\t\t静态方式访问=%s' % (MyData.classDatas))
运行结果如下:

这篇博客探讨了Python中类变量与实例变量的差异,类变量由所有实例共享,类似于Java的静态变量。示例代码创建了一个名为MyData的类,其中classDatas是类变量,objectDatas是实例变量。在实例化过程中,每个实例有自己的objectDatas列表,但classDatas列表对于所有实例是共通的。这展示了Python类变量的特性及其与Java静态变量的相似性。

3344

被折叠的 条评论
为什么被折叠?



