#我们已经知道了类除了特殊(非法)方法可以从外部访问
#其他时候都保持隐蔽的状态,那么它的作用域是怎样的呢
class MemberCounter :
member=0
def add(self) :
MemberCounter.member+=1
def get_member(self) :
print(MemberCounter.member)
def add_self(self) :
self.member+=1
def get_self_member(self) :
print(self.member)
a=MemberCounter()
a.add()
a.get_member()#1
b=MemberCounter()
b.add()
b.get_member()#2
a.add_self()
a.get_self_member()#3
b.get_self_member()#2
#可以看到,定义在类中的变量,即便不是一个对象,也是可以
#改变它的,不过也可以通过self对属性加以限定,使其只改变对象
#中的属性,但‘类.属性’一旦被改变,所以对象中的属性也会被改变
#这就是类的作用域
#还有,如果通过赋值的方式改变对象中的属性
b.member="have changed"
b.get_member()#2
b.get_self_member()#have changed
#会改变对象中的属性,但类中的属性不会变,这种情况是由于
#新值被写入了b的属性,这个属性遮挡住了类级变量