封装就是隐藏。
1:封装数据
将数据隐藏起来这不是目的。隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对数据属性操作的严格控制。
class People: def __init__(self, name, age): self.__name = name self.__age = age def tell_info(self): print('name:<%s>, age:<%s>'% (self.__name, self.__age)) def set_info(self, name, age): if not isinstance(name, str): print('输入的名字错误') return if not isinstance(age, int): print('输入的年龄错误') return self.__name = name self.__age = age class Teacher(People): def __init__(self,name, age, lever): super().__init__(name, age) self.lever = lever t1 = Teacher('zheng', 26, 10) t1.tell_info() t1.set_info('wang', 30) t1.tell_info()
2:目的是隔离复杂度
#取款是功能,而这个功能有很多功能组成:插卡、密码认证、输入金额、打印账单、取钱 #对使用者来说,只需要知道取款这个功能即可,其余功能我们都可以隐藏起来,很明显这么做 #隔离了复杂度,同时也提升了安全性
class ATM: def __card(self): print('插卡') def __auth(self): print('用户认证') def __input(self): print('输入取款金额') def __print_bill(self): print('打印账单') def __take_money(self): print('取款') def withdraw(self): self.__card() self.__auth() self.__input() self.__print_bill() self.__take_money() a=ATM() a.withdraw()