立即学习:https://edu.csdn.net/course/play/24797/282191?utm_source=blogtoedu
python并未提供真正的隐藏机制,python类中所有默认成员都是公开的。
若需要隐藏某些成员,将它们命名为以双下划线开头即可。其实也依然可通过加“下划线加类名”前缀赖调用被隐藏的成员
class Test: def __init__(self, name='admin', passwd='password'): if Test.checkPw(self, passwd) and Test.checkNm(self, name): self.__name = name self.__passwd = passwd else: print('输入无效') exit() def getPw(self): return self.__passwd @property def name(self): return self.__name def setPw(self, passwd): if Test.checkPw(self, passwd): self.__passwd = passwd else: print('password格式不对') exit() @name.setter def name(self, name): if Test.checkNm(self, name): self.__name = name else: print('name格式不对') exit() def checkNm(self, name): if isinstance(name, str) and 4 <= name.__len__() <= 8: return True else: return False def checkPw(self, passwd): if isinstance(passwd, str) and 6 <= passwd.__len__() <= 10: return True else: return False # name = property(fget=getNm, fset=setNm) passwd = property(fget=getPw, fset=setPw) t = Test() inm = input("请输入用户名_____") # t.name = 'hello' # t.passwd = 'word' t.name = inm ipw = input('请输出密码_______') t.passwd = ipw print(t._Test__name,t._Test__passwd) print(t.name, t.passwd)