Discuss / Python / 有一块,没弄明白。

有一块,没弄明白。

Topic source

感悟旅途

#1 Created at ... [Delete] [Delete and Lock User]

>>>def set_score(self, score):

.....         self.score = score

>>>Student.set_score = set_score

>>>s.set_score(100)

>>>s.score

100

>>>s2.set_score(99)

>>>s2.score

99

>>>s.score   #为什么这里是100,不应该是99吗,要是所有实例都共用类属性,这里该是99

100

感悟旅途

#2 Created at ... [Delete] [Delete and Lock User]

#弄明白了。

>>>class Test(object):

 ...     score=25

>>>t1=Test()

>>>t2=Test()

>>>t1.score

25

>>>t2.score

25

>>>t1.score=100  

#实际上这里并没有修改类属性值,而只是给实例新创建了一个与类属性同名的实例属性score,并赋值为100.并且将类属性给覆盖了。

>>>t1.score  #调用的实际是实例属性值。

100

>>>t2.score

25

>>>t2.score

25

如果吧self.改成Student.呢


  • 1

Reply