类变量就是供类使用的变量,实例变量就是供实例使用的。如下面的代码:
class Person:
name = "Tacey"
p1 = Person()
p2 = Person()
p1.name = "11111"
print p1.name #结果11111
print p2.name #结果Tacey
print Person.name #结果Tacey
这里p1.name="11111"
是实例调用了类变量,这其实和上面第一个问题一样,就是函数传参的问题,p1.name
一开始是指向的类变量name='Tacey'
,但是在实例的作用域里把类变量的引用改变了,就变成了一个实例变量,self.name
不再引用Person的类变量name了。
可以看看下面的例子:
class Person():
name = []
p1 = Person()
p2 = Person()
p1.name.append(1)
print p1.name #结果[1]
print p2.name #结果[1]
print Person.name #结果[1]