前提:类中的属性不想被外界修改,则可以将属性变成私有变量,前面用__标记
class Student:
"""docstring for Student"""
def __init__(self, name, score):
self.__name = name #__name为该类的私有变量,不可以被外界直接调用,可以借助方法获得
self.__score = score
def getName(self):
return self.__name
def getScore(self):
return self.__score
if __name__ == '__main__':
st = Student("yanghui",80)
print("%s: %s" %(st.getName(),st.getScore()))
练习:请把下面的Student
对象的gender
字段对外隐藏起来,用get_gender()
和set_gender()
代替,并检查参数有效性:
class Student(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
# 测试: bart = Student('Bart', 'male') if bart.get_gender() != 'male': print('测试失败!') else: bart.set_gender('female') if bart.get_gender() != 'female': print('测试失败!') else: print('测试成功!')答案:
class Student:
"""docstring for Student"""
def __init__(self, name, gender):
self.__name = name #__name为该类的私有变量,不可以被外界直接调用,可以借助方法获得
self.__gender = gender
def set_gender(self,gender):
if gender in ['male', 'female']:
self.__gender = gender
else:
print("input error")
def get_gender(self):
return self.__gender
if __name__ == '__main__':
st = Student("yanghui",'male')
if st.get_gender() != 'male':
print('测试失败!')
else:
st.set_gender('llll')
print(st.get_gender())
if st.get_gender() != 'female':
print('测试失败!')
else:
print('测试成功!')