公众号第三方建微网站,工信部官网备案查询系统,wap端网站建设,天津关键词#每天一点Python——94
#面向对象的三大特征——封装 封装#xff1a;隐藏内部细节#xff0c;对外提供操作方式。【提高程序的安全性】
继承#xff1a;在函数调用时#xff0c;使用’形参名称值‘的方式进行传参#xff0c;传递参数的顺序可以与定义时参数顺序不同【提高…#每天一点Python——94
#面向对象的三大特征——封装 封装隐藏内部细节对外提供操作方式。【提高程序的安全性】
继承在函数调用时使用’形参名称值‘的方式进行传参传递参数的顺序可以与定义时参数顺序不同【提高程序的复用性】
多态在函数定义时直接对形式参数进行赋值。在调用时如果该参数不传值将使用默认值如果该参数传值则使用传递的值【提高程序的拓展性和可维护性】
三大特征与语言本身没有关系不管你是c或者java都一样这只是一种编程思想而我们现在就是在学Python所以接触Python方面比较多。#封装类似于银行用的ATM机你根本不清楚内部结构但是你只要会如何使用就可以了。至于内部细节如何使用就不用管了。
其目的就是保证数据的安全性。#封装的实现封装将数据属性和行为方法包装在类对象中。在方法内部对属性进行操作在类对象的外部调用方法。
这样就不用关心方法内部具体的实现了从而隔离了复杂度。#封装的实现
class Car():def __init__(self,pingpai):self.pingpaipingpaidef qidong(self):print(汽车已经启动)#以上就是一个创建好的类了
#我们现在创建一个对象
carCar(汽车)
car.qidong()
print(car.pingpai)输出结果如下
汽车已经启动
汽车
这就是封装好一个类后的使用。封装示意图 点击图中所示位置就会看到我们创建的类就已经像一个包一样封装好了。提高了方便
#封装好一个类后肯定设计到一些权限的使用
#就像一个应用软件有面向用户和面向操作人员的要使用就得开通权限这样就产生了权限控制权限控制是通过对属性、方法添加单下划线、双下划线以及首尾双下划线来实现的。
各个下划线的区别
①单下划线开头
以单下划线开头的属性或方法表示protected受保护的成员这类成员被视为仅供内部使用允许类本身和子类进行访问但实际上它可以被外部代码访问。
②双下划线开头
表示private私有的成员这类成员只允许定义该属性或方法的类本身进行访问。
③首尾双下划线
一般表示特殊的方法#例权限控制
class Student:#首尾双下划线def __init__(self,name,age,xingbie):#方法的形参也就是局部变量self._namename#受保护的单下划线开头只能本类和子类访问self.__ageage#私有的双下划线开头智能类本身去访问self.xingbiexingbie#普通的实例属性类的内部外部以及子类都可以访问【访问权限最大】def _fun(self):#定义一个方法加了一个下划线说明它是受保护的print(子类以及它本身可以使用)def __fun2(self):#定义一个私有的方法print(只有定义的类可以访问)def pu(self):#定义一个普通的实例方法self._fun()#类本身访问受保护的方法self.__fun2()#类本身去访问私有的方法print(self._name)#受保护的实例属性print(self.__age)#私有的实例属性
#以上就是我们创建出来的类的结构。
#接下来创建一个对象
stuStudent(name阿四,age20,xingbie男)#因为我们初始化方法里面有三个参数所以我们创建的对象也需要三个参数
#现在我们在类的外部在类的外部访问受保护的实例属性stu._name
print(stu._name)
#输出阿四
#然后我们再访问一下类的私有属性stu.__ageprint(stu.__age)
输出结果
Student object has no attribute __age
会报错。会显示没有这个属性。
这里就疑惑了我明明定义了这个呀
这是因为私有属性出了类的定义范围就不能使用了#访问受保护的示例方法
stu._fun()
#输出子类以及它本身可以使用访问私有方法
stu.__fun2()
输出Student object has no attribute __fun2
报错也是没有这个方法说明也是超过访问了不允许访问
#私有的实例属性和方法是真的不能访问吗可以访问只是他的访问多了一个形式要求使用对象名字
如下print(stu._Student__age)stu._Student__fun2()
#为什么可以访问
#dir函数可以展示对象中所有的属性和方法。
print(dir(stu))
#输出如下[_Student__age, _Student__fun2, __class__, __delattr__,
__dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__,__gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__, __weakref__, _fun, _name, pu, xingbie]以上就是这个对象所有的属性和方法了在里面可以看到我们私有的age在里面定义为_Student__age所以我们访问它时也需要使用这种形式。fun2方法在里面是_Student__fun2所以我们调用时也需要对象名打点调用_Student__fun2才可以。以上就是权限的控制。