1.访问限制
在class类内,包括了属性和方法,外部代码可以调用具体变量来调用,而且内部的逻辑也被隐藏,但是根据上篇实例可以看到
外部的代码可以自由修改每个属性name、score,如下:
代码
class Stu(object):
def __init__(self,name,score):
self.name=name
self.score=score
def get_grade(self):
if self.score>90:
return '优秀'
elif self.score>80:
return '良好'
elif self.score>60:
return '及格'
else :
return '不及格'
s1=Stu('小沈同学',100)
s2=Stu('小常同学',59)
print(s1.name,s1.get_grade())
print(s2.name,s2.get_grade())
#修改成绩
s2.score=1000
print(s2.score)
print(s2.name,s2.get_grade())
结果
小沈同学 优秀
小常同学 不及格
1000
小常同学 优秀 #修改成功
要想防止被外部改动,可以使用私有变量,即在class内的变量前加上两个‘_’,私有变量不允许被外部代码更改。
如下:
def __init__(self,name,score):
self.__name=name
self.__score=score
注:这里虽然说不能该,但是还是有办法改,因为python并不能阻止你做坏事,全靠自觉。
2.如果有想让外部代码可以修改class内的属性,可以这么做,定义一个函数
def set_score(self,score):
if(0<=score<=100):
self.__score = score
else:
return '无效的分数'