Python----面向对象---封装的意义
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python----面向对象---封装的意义,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1615字,纯文字阅读大概需要3分钟。
内容图文
一、封装数据属性、明确区分内外:示例代码如下:
1 class People: 2 def __init__ (self, name, age): 3 self.__name = name 4 self.__age = age 5 6def tell_info(self): 7print(‘Name:<%s> Age<%s>‘ % (self.__name, self.__age)) 8 9 p = People(‘egon‘, 18) 10p.tell_info() 1112结果为: 13 Name:<egon> Age<18>
可以防止外部直接修改隐藏属性,并且提供了一个接口,按照固定的格式向调用者输出信息
也可以提供修改隐藏属性的接口,让调用者通过接口修改隐藏的属性,并且可以写上控制逻辑
例如:
1 def set_info(self, name, age): 2 if not isinstance(name, str): 3 print(‘名字必须是字符串类型‘) 4return 5ifnot isinstance(age, int): 6print(‘年龄必须是数字类型‘) 7return 8 self.__name = name 9 self.__age = age 101112 p = People(‘egon‘, 18) 13# p.tell_info()1415 p.set_info(‘EGON‘, 18) 16p.tell_info() 1718结果为: 1920 Name:<EGON> Age<18>
可以看出,修改成功了,并且加上了控制,不让调用者随意更改
二、隔离复杂度
例如:
1 class ATM: 2 def __card (self): 3 print(‘插卡‘) 4 5def__auth(self): 6print(‘用户认证‘) 7 8def__input(self): 9print(‘输入取款金额‘) 1011def__print_bill(self): 12print(‘打印账单‘) 1314def__take_money(self): 15print(‘取款‘) 1617def withdraw(self): 18 self.__card() 19 self.__auth() 20 self.__input() 21 self.__print_bill() 22 self.__take_money() 2324 a = ATM() 25a.withdraw() 2627结果为: 2829插卡 30用户认证 31输入取款金额 32打印账单 33 取款
用户只关注取款,至于里面怎么实现,用户并不关注
三、扩展性高
一个求房间面积的例子,如下:
1 class Room: 2 def __init__ (self, name, owner, weight, length): 3 self.name = name 4 self.owner = owner 5 6 self.__weight = weight 7 self.__length = length 8 9def tell_area(self): 10return self.__weight * self.__length1112 r = Room(‘卫生间‘, ‘alex‘, 10, 10) 13print(r.tell_area()) 1415结果为: 16 100
调用者不关心后面的计算方式,只关心房间面积,如果要求体积,只需更改下公式,用户调用不用发生改变
原文:https://www.cnblogs.com/xudachen/p/8619740.html
内容总结
以上是互联网集市为您收集整理的Python----面向对象---封装的意义全部内容,希望文章能够帮你解决Python----面向对象---封装的意义所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。