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

这是怎么回事???

class Person(object):

    name = 'abc'


obj1 = Person()

obj2 = Person()


obj1.name = 'world'

print obj1.name     # world

print obj2.name     # abc


Person.name = 'hello'

print obj1.name     # world

print obj2.name     # hello


正在回答

5 回答

没什么好纠结的,若没有定义同名的实例变量,则访问的是对应的类变量,若在类实例中动态添加了同名的实例属性,则此时通过obj.attribution访问的就是obj的属性,它屏蔽了类变量(属性),若要访问类变量,还是使用类名.属性。。

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

一个是类属性..一个是实例对象的属性吧

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

我是这样理解的,obj1.name = 'world'已经创建了实例属性,是单独的,而obj2.name还是访问类属性

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

改变Person不会影响这两个已经实例化的对象的数据

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

obj1.name 输出都是world,而不是abc和hello???

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

举报

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

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

进入课程

这是怎么回事???

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