访问限制机制
1.什么是访问限制机制?
凡是以类内部定义的属性或方法
以__开头的属性或方法名,都会被限制,外部不能“直接访问”该属性原型。
ps:看着像将该属性或方法隐藏起来了。
#python特有的:
注意:凡是在内部定义 __ 开头的属性或方法,都会变形为__ 类名__属性/方法。
2.为什么要有访问限制?
比如:将一些隐私的数据,隐藏起来,不让外部轻易获取。
-接口:
可以将一堆数据封装成一个接口,可以让用户调用接口
并且通过相应的逻辑,最后再将数据返回给用户
3.如何实现?
# demo1 class User: # __开头的属性 __name = 'tank' # __name变形为 ---》 _类名__name # __开头的方法 def __run(self): print('tank is running...') print(User.__name) obj = User() print(obj._User__name) # # demo2 class User: # __开头的属性 __name = 'tank' # __name变形为 ---》 _类名__name __age = 17 __sex = 'male' __ID = '46549846798468498498' __bal = 151651651651654654654 # def __init__(self, name, age, sex): # self.__name = name # self.__age = age # self.__sex = sex # 校验接口,获取用户信息 def parse_user(self, username, password): if username == 'tank_jam' and password == '123': print(f''' 通过验证,获取用户信息。 用户名: {self.__name} 用户年龄: {self.__age} 用户性别: {self.__sex} 身份ID: {self.__ID} 用户资产: {self.__bal} ''') else: print('校验失败, 无法查询用户信息!') # __开头的方法 def __run(self): print('tank is running...') obj = User() obj.parse_user('tank_jam', '1234') # demo3: class ATM: # 取钱功能: # 1.插入磁卡 def __insert_card(self): print('开始插卡...') pass # 2.输入密码 def __input_pwd(self): print('输入密码...') pass # 3.输入取款金额 def __input_bal(self): print('输入取款金额...') pass # 4.吐钱 def __output_money(self): print('开始吐钱...') pass # 5.打印流水账单 def __print_flow(self): print('打印流水账单...') pass # 取款顺序规范接口: def withdraw(self): # 1.插入磁卡 self.__insert_card() # 2.输入密码 self.__input_pwd() # 3.输入取款金额 self.__input_bal() # 4.吐钱 self.__output_money() # 5.打印流水账单 self.__print_flow() amt_obj = ATM() amt_obj.withdraw()