
【Python】面向对象,封装
发布日期:2021-05-07 23:12:41
浏览次数:10
分类:原创文章
本文共 2136 字,大约阅读时间需要 7 分钟。
封装来了:封装是啥?封装就好像把你需要的东西装到盒子里然后用封口胶把空封起来。照这种逻辑看,封装=“隐藏”。
哪在Python中怎么看出来隐藏呢?
在Python中用双下划线开头的方式将属性隐藏起来(设置成私有的)
类中所有双下划线开头的都会自动变形成:__类名__x的形式
"""就是把函数跟方法给封装起来定义里两个类,封装"""class xiaoxin: __A="shimmer"#类的数据属性一个是共享的,但是语法上可以是把类的数据属性设置成私有的如_xiaoxin__A def __Foo(self): print("from xiaoxin") def bar(self): self.__Foo()#只有在类的内部才能被访问到class xiaoting(xiaoxin): def __FOO(self): print("from xiaoting")d=xiaoting()d.bar()
注意:
1、这种机制也并没有真正意义上限制我们从外部直接访问属性,知道了类名和属性名就可以拼出名字:_类名__属性,然后就可以访问了,如a._A__N
2、变形的过程只在类的定义是发生一次,在定义后的赋值操作,不会变形
3、在继承中,父类如果不想让子类覆盖自己的方法,可以将方法定义为私有的
封装的意义:
#一:封装数据属性:明确的区分内外,控制外部对隐藏的属性的操作行为
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("姓名需要为字符串类型!!!") if not isinstance(age,int): print("年龄需要为整型!!!") self.__name=name self.__age=agep=People("shimmer",21)p.tell_info()p.set_info("EGON",38)p.set_info(38,"EGON")p.set_info(111,222)
#二、 封装方法:隔离复杂度
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.withdr
3:封装也能体现面向对象的可扩展性高这一点
"""定义一个房类:有长宽高,拥有者,类型"""class Room: def __init__(self,name,owner,length,width,height): self.name=name self.owner=owner self.__length=length self.__width=width self.__height=height def area(self):#对外提供的接口,隐藏了内部的实现细节,此时我们想求的是面积 res=self.__length*self.__width*self.__height print(res) def info(self): print("房子类型:%s"%self.name)d=Room("两房一厅","shimmer",10,20,10)d.area()#使用者调用接口d.info()
直接从内部定义函数方法,给外部提供接口进行访问。
封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码;而外部使用用者只知道一个接口(函数),只要接口(函数)名、参数不变,使用者的代码永远无需改变。这就提供一个良好的合作基础——或者说,只要接口这个基础约定不变,则代码改变不足为虑。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月25日 12时32分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于单片机模拟六层电梯控制系统的设计-全套设计资料
2019-03-05
基于单片机可控音乐流水灯控制设计-全套资料
2019-03-05
基于单片机简易信号误差分析设计-全套资料
2019-03-05
基于单片机简易洗衣机系统仿真设计-全套资料
2019-03-05