鱼C论坛

 找回密码
 立即注册
查看: 781|回复: 3

[已解决]关于类属性的疑问

[复制链接]
发表于 2020-6-19 10:12:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第一个代码:
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也调用了不知道为什么?能解释一下属性的调用方法吗
最佳答案
2020-6-19 10:14:26

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

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

第一个会影响所有后续被实力的对象  而第二个不影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 10:13:23 | 显示全部楼层
第一个是类属性,第二个是实例属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-19 10:14:26 | 显示全部楼层    本楼为最佳答案   

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

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

第一个会影响所有后续被实力的对象  而第二个不影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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


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

而第二个代码每次实力对象都是独立的  互不影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 13:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表