为了账号安全,请及时绑定邮箱和手机立即绑定

p1.count = p1.count + 1 为什么不能修改类属性的值

class Person(object):

    count = 0

    def __init__(self):

        Person.count = Person.count + 1


p1 = Person()

p1.count = p1.count + 1

print p1.count

p2 = Person()

print Person.count

p3 = Person()

print Person.count

执行的结果是 

2

2

3

p1.count = p1.count + 1 为啥这个表达式不能在其他的实例创建的时候产生作用,Person.count =Person.count + 1  如果换成这个就可以


正在回答

3 回答

你可能在父类里面写了一些方法而在继承的时候没有在子类中实现这些方法,所以才会出现这种错误

aeqtnxkehcyjkbhpu

0 回复 有任何疑惑可以回复我~

不能通过实例属性去修改类属性的值,只能通过类属性来修改

0 回复 有任何疑惑可以回复我~

count是类属性,要改变类属性得用“Person.count”,“p1.count”改变的只是实例p1的属性,而是实例属性的优先级比类属性高,我是这么理解的。

2 回复 有任何疑惑可以回复我~
#1

人间世支离疏

就是这么一回事
2019-11-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255771    人
  • 解答问题       2946    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

p1.count = p1.count + 1 为什么不能修改类属性的值

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信