波大大12138 发表于 2020-6-19 10:12:00

关于类属性的疑问

第一个代码:

class A:
       count=0
def __init__(self)
       A.count+=1


第二个代码:

class A:
       count=0
def __init__(self):
       self.count+=1
a=A()
a.count


我想问一下count不是类属性吗?类属性不是只有类才能调用吗比如第一个代码的A.count ,为什么第二个代码是用self调用的:self.count,还有用了a.count也调用了不知道为什么?能解释一下属性的调用方法吗

qiuyouzhi 发表于 2020-6-19 10:13:23

第一个是类属性,第二个是实例属性

Twilight6 发表于 2020-6-19 10:14:26


第二个代码是指对被实例化后的对象进行 + 1 的

而第一个是对最原始的 类对象进行 +1 的

第一个会影响所有后续被实力的对象而第二个不影响

Twilight6 发表于 2020-6-19 10:20:18

本帖最后由 Twilight6 于 2020-6-19 10:22 编辑

举个例子吧:

先运行第一个代码看看结果:

class A:
    count=0
    def __init__(self):
         A.count+=1

a = A()
print(a.count)
b = A()
print(b.count)
c = A()
print(c.count)
print(A.count)
返回结果:
1
2
3
3


在运行第二个代码看看结果:
class A:
    count=0
    def __init__(self):
         self.count+=1
a=A()
b=A()
print(A.count)
print(a.count)
print(b.count)

返回结果:
0
1
1


简单说,第一个代码就是在根本上的类进行改变,会影响所有后续被实例化的对象

而第二个代码每次实力对象都是独立的互不影响
页: [1]
查看完整版本: 关于类属性的疑问