class ceshi(): def __init__(self, name, age): self.__name = name self.__age = age pass def get_name(self): return self.__name pass ceshi = ceshi("小李", 18) print(ceshi.get_name()) ceshi.__age = 20 print(type(ceshi.__age))
可以通过__name限制内部属性不被外部访问,通过return的方式返回self.__name,则可以得到内部属性
通过ceshi.__age = 20
print(type(ceshi.__age))的方式得知,通过ceshi.__age = 20的方式并不能修改内部变量,而是创建了一个变量ceshi.__age = 20,返回的类型时”int"类型。
修改内部变量可以通过以下方式
def set_age(self, age): self.__age = age pass
ceshi.set_age(20) print(ceshi.get_age())
注意输出时,ceshi.get_age需要加(),否则返回的是<bound method ceshi.get_age of <__main__.ceshi object at 0x0000026946AABFD0>>
廖老师的访问限制课后题:访问限制 - 廖雪峰的官方网站
class Student(object): def __init__(self, name, gender): self.__name = name # 将name变为私有属性(private) self.__gender = gender pass def get_name(self): return self.__name # 外部代码获取name def get_gender(self): return self.__gender def set_name(self, name): self.__name = name # 允许外部代码修改name pass def set_gender(self, gender): self.__gender = gender pass pass
bart = Student('Bart', 'male') if bart.get_gender() != 'male': # 如果bart.get_gender() 不等于“male” print('测试失败!') else: bart.set_gender('female') if bart.get_gender() != 'female': # 如果bart。get_gender()没有被修改为“female” print('测试失败!') else: print('测试成功!') #证明修改后的代码name和gender可修改可访问
结果为测试成功