self._name = name #name前有一个下划线,这个属性可以被访问,但是由于约定俗称,应该被视作私有变量(private)
self.__name = name #name前有两个下划线,这个属性是被禁止访问的(外部访问时被禁止),访问时会报错。如果需要修改数据(name),可以定义一个方法(self.__name = name)。如果需要访问数据可以定义方法(return self.__name)
廖老师的教程
class Student(object):
def __init__(self, name, gender):
self.__name = name
self.__gender = gender
def get_gender(self):
return self.__gender
def set_gender(self, gender):
if gender =='male' or gender == 'female': # if gender in('male', 'female'):
self.__gender = gender
else:
raise ValueError('bad gender')
bart = Student('Bart', 'male')
if bart.get_gender() != 'male':
print('1测试失败!')
else:
bart.set_gender('fmale')
print(bart.get_gender())
if bart.get_gender() != 'female':
print('2测试失败!')
else:
print('3测试成功!')