重庆网站建站建设的费用,买高端品牌网站,59网站一起做网店广州,网站后台文章排版封装 封装其实是一种思想#xff0c;将事物状态和功能装进一个容器#xff0c;那么这个容器在python中就是类#xff0c;由这个类产生的对象都拥有类的属性和功能 在面向对象的思想中#xff0c;推崇将具有某些共同特征的事物归为一类#xff0c;那么这些事物就可以看做是…封装 封装其实是一种思想将事物状态和功能装进一个容器那么这个容器在python中就是类由这个类产生的对象都拥有类的属性和功能 在面向对象的思想中推崇将具有某些共同特征的事物归为一类那么这些事物就可以看做是这个类的具象化对象但是允许个体拥有不同的特征 例如你和我都是人都具有人的基本功能那么我们就是人的对象我和你的名字可以不一样性别可以不一样但本质上我们都是人类 在前面我们说到类不是实实在在存在的是一系列拥有相似属性和功能的事物的抽离。那么在定义类和类的属性、功能上实际就是把这些属性和功能封装进类里面抽离相似属性和功能并把它们放到类里这种思想就是封装 class Animal: dog “” human “” ... def eat(self): print(enting) def sleep(self): print(sleeping) 动物类封装进了dog、human等等属性封装了eat、sleep等功能这些都属于Animal类共有的一些属性和功能 继承 继承的概念源于对现实事物的模拟在人类的概念中人类下面还有女人、男人、小孩、大人等细分概念那么女人就是人类的扩展人类概念就是女人概念的爸爸女人概念除了拥有人类的所有属性和功能外还多了一个属性就是性别那么女人类和人类就有非常多的相同属性和功能回到编程中这些高度相似或者相同的属性和功能其实就是重复的代码继承的出现就是为了避免重复写大量代码描述两个属性和功能高度重合的类。 例 class human legs 4 ear 2 def eat (self): pass class women: legs 4 ear 2 sex “” def eat (self): pass 由human 和 women 类可以看出他们有相同的属性legs、ear和相同的功能eat如果在代码里这么写代码将非常冗余面向对象语言几乎都有继承的思想如果用继承来表示上面的代码将会是 class human legs 4 ear 2 def eat (self): pass class womenhuman: sex 这样的话human就是继承womenhuman就是women的父类women就是human的子类women既有自己的属性sex也拥有父类的所有属性和功能。 具体实现和原理见 多继承 在python中允许多继承关系一个类可以同时继承多个类这样它就拥有所有父类的属性和方法在python2中没有继承任何类的类被称为经典类默认不继承任何类 在python3中所有的类默认继承object这种类被称为新式类 菱形继承 a继承b,cb,c由同时继承d那么继承关系就形成闭环此时a拥有的功能和属性最多d拥有的功能和属性最少 菱形继承会带来属性查找顺序的问题比如a的属性name是继承而来的但不知道是bcd哪一个的此时就会有查找顺序在python2和python中是不一样的 python2中是以深度查找为基本原则即a-b-d-c一直查找到继承关系最深的那一层 python3中是以广度查找为基本原则的即a-b-c-d先将分支都查找完最后找最深的那一层 多态 由同一父类派生的不同子类对象都可以作为参数传递给某个函数去执行并产生不同的结果这种形态叫多态。 例 class A: def __init__(self,name): self.name name class B(A): pass def pri_name(obj): print(obj.name) b1 B(egon) b2 B(owen) pri_name(b1) pri_name(b2) 打印结果 egon owen 鸭子类型 两个不相干的两个类的对象可以将自身作为参数传给同一个函数去调用执行这样的就是鸭子类型在python里十分推崇鸭子类型一个生物不知道它是不是鸭子但它只要长得像鸭子水里游泳像鸭子那就认为它是鸭子 class A: def __init__(self,name): self.name name self.age 18 class B: def __init__(self,name): self.name name self.sex female def pri_name(obj): print(obj.name) b1 B(egon) b2 B(owen) pri_name(b1) pri_name(b2) 打印结果 egon owen 转载于:https://www.cnblogs.com/dongxixi/p/10759364.html