私有属性和私有方法
class Student(object):
def __init__(self,name,score):
# 前面带两个下划线表示对变量进行私有化
# 外部不能随便的访问和更改
self.__name = name
self.__score = score
def get_grand(self):
print('my name is %s,my grade is %d' %(self.__name,self.__score))
def get_name(self):
return self.__name
def get_score(self):
return self.__score
def set_name(self,name):
if isinstance(name,str):
self.__name = name
else:
raise ValueError('请输入正确的名字')
def set_score(self,score):
if isinstance(score,int):
self.__score = score
else:
raise ValueError('请输入正确的成绩')
如果像下面这样调用会出错,因为name和score是私有方法,类外部不能使用
tom = Student('Tom',89)
print(tom.name)
print(tom.score)
也不能这样改:
tom.__name = 'new_name'
这样做只是给对象添加了__name的属性,而不是修改私有属性的值
可通过间接的方法来访问:
tom = Student('Tom',89)
# print(tom.name)
# print(tom.score)
tom.set_name('tommm')
tom.set_score(99)
print(tom.get_name())
print(tom.get_score())
输出结果:
tommm
99