当前位置: 首页 > news >正文

青岛网站制作公司 网络服务装修案例实景图

青岛网站制作公司 网络服务,装修案例实景图,手机软件网站,深圳网络营销软件面向对象之继承 什么是面向对象的继承#xff1f; 继承#xff08;英语#xff1a;inheritance#xff09;是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B#xff0c;就把这个A称 为“B的子类别”#xff0c;而把B称为“A的父类别”也可以称“B是… 面向对象之继承 什么是面向对象的继承 继承英语inheritance是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B就把这个A称 为“B的子类别”而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法而 不需要再次编写相同的代码。在令子类别继承父类别的同时可以重新定义某些属性并重写某些方法即覆盖父类别的 原有属性和方法使其获得与父类别不同的功能。另外为子类别追加新的属性和方法也是常见的做法。 一般静态的面向 对象编程语言继承属于静态的意即在子类别的行为在编译期就已经决定无法在执行期扩充。 class Person:def __init__(self,name,sex,age):self.name nameself.age ageself.sex sex class Cat:def __init__(self,name,sex,age):self.name nameself.sex sexself.age age class Dog:def __init__(self,name,age,sex):self.name nameself.sex sexself.age age # 定义三个不同的类class Animal(object):def __init__(self,name,sex,age):self.name nameself.sex sexself.age age # 定义一个Animal父类 class Person(Animal):pass class Dog(Animal):pass class Person(Animal):pass # 派生三个子类 继承的优点 增加了类的耦合性耦合性不宜多宜精。减少了重复代码。使得代码更加规范化合理化。继承的分类 父类,又叫基类,超类上面例子中的Animal就是一个父类。 子类派生类由父类派生而成的类可以调用父类的静态属性和动态方法。 继承可以分单继承多继承。 经典类和新式类 在python2.2版本之前均为经典类python2.2之后新式类和经典类并存python3之后取消了经典类的概念、简单来说在python2x基类的根如果什么也不写就是经典类,如果python的根为object就为新式类python3x版本中只有一种类 python3中使⽤的都是新式类. 如果基类谁都不继承. 那这个类会默认继承 object单继承 类名对象执行父类方法 class Aniaml(object):type_name 动物类def __init__(self,name,sex,age):self.name nameself.age ageself.sex sexdef eat(self):print(self)print(吃东西)class Person(Aniaml):passclass Cat(Aniaml):passclass Dog(Aniaml):pass# 类名 print(Person.type_name) # 可以调用父类的属性方法。 Person.eat(111) print(Person.type_name) 执行顺序 class Animal(object): # 1type_name 动物类 # 6def __init__(self,name,sex,age): # 7self.name name # 8self.sex sex # 9self.age age # 10def eat(self):print(self)print(吃东西) class Person(Animal): # 2def eat(self): # 11print(%s 吃饭%self.name) # 13 class Cat(Animal): # 3pass class Dog(Animal): # 4pass p1 Person(alex,laygirl,34) # 5 p1.eat() # 12 # 结果 alex 吃饭 # 实例化对象时必须执行__init__方法,类中没有从父类找父类没有从object类中找。 # 先要执行自己类中的eat方法自己类没有才能执行父类中的方法。 同时执行类以及父类中的方法 1.方法一 如果想执行父类的func方法这个方法并且子类中也用那么就在子类的方法中写上 父类.func(对象,其他参数) class Aniaml(object):type_name 动物类def __init__(self,name,sex,age):self.name nameself.age ageself.sex sex # 继承父类中的三个静态属性def eat(self):print(吃东西)class Person(Aniaml):def __init__(self,name,sex,age,mind):Aniaml.__init__(self,name,sex,age) # 方法一self.mind mind # 封装mind属性def eat(self):super().eat()print(%s 吃饭%self.name) class Cat(Aniaml):passclass Dog(Aniaml):pass p1 Person(春哥,laddboy,18,有思想) print(p1.__dict__) 2.利用supersuper().func(参数)父类的重构 class Animal:def __init__(self,name,sex,age):self.name nameself.sex sexself.age agedef eat(self):print(动物都需要吃饭) class Human(Animal):def __init__(self,name,sex,age,hobby):super(Human,self).__init__(name,sex,age) # 继承父类中的三个静态属性self.hobby hobbydef eat(self):super().eat() # 执行父类中的eat方法print(f{self.name}都需要吃饭) class Dog(Animal):pass class Cat(Animal):pass H1 Human(小红,女,18,看书) H1.eat() # 结果 动物都需要吃饭 小红都需要吃饭 单继承经典练习题 # 1 class Base:def __init__(self, num):self.num numdef func1(self):print(self.num)class Foo(Base):pass obj Foo(123) obj.func1() # 123 运⾏的是Base中的func1 # 2 class Base:def __init__(self, num):self.num numdef func1(self):print(self.num) class Foo(Base):def func1(self):print(Foo. func1, self.num) obj Foo(123) obj.func1() # Foo. func1 123 运⾏的是Foo中的func1 # 3 class Base:def __init__(self, num):self.num numdef func1(self):print(self.num) class Foo(Base):def func1(self):print(Foo. func1, self.num) obj Foo(123) obj.func1() # Foo. func1 123 运⾏的是Foo中的func1 # 4 class Base:def __init__(self, num):self.num numdef func1(self):print(self.num)self.func2()def func2(self):print(Base.func2) class Foo(Base):def func2(self):print(Foo.func2) obj Foo(123) obj.func1() # 123 Foo.func2 func1是Base中的 func2是⼦类中的 # 再来 class Base:def __init__(self, num):self.num numdef func1(self):print(self.num)self.func2()def func2(self):print(111, self.num) class Foo(Base):def func2(self):print(222, self.num) lst [Base(1), Base(2), Foo(3)] for obj in lst:obj.func2() # 111 1 | 111 2 | 222 3# 再来 class Base:def __init__(self, num):self.num numdef func1(self):print(self.num)self.func2()def func2(self):print(111, self.num) class Foo(Base):def func2(self):print(222, self.num) lst [Base(1), Base(2), Foo(3)] for obj in lst:obj.func1() # 那笔来吧. 好好算 多继承 class A:def __init__(self,name):self.name namedef show_name(self):print(fA的名字为{self.name}) class B:def __init__(self,name):self.name namedef show_name(self):print(fB的名字为{self.name}) class C(A,B): # C同时继承AB类pass c C(A) print(c.name) c.show_name() 在python这种经典类和新式类继承父类所使用的算法是完全不同的 经典类的多继承 经典类的多继承采用深度优先算法 class A:pass class B(A):pass class C(A):pass class D(B, C):pass class E:pass class F(D, E):pass class G(F, D):pass class H:pass class Foo(H, G):pass 类的: Foo- H - G - F - E - D - B - A - C. 新式类的多继承 mro序列 MRO是一个有序列表L在类被创建时就计算出来 通用计算公式为 mro(Chird(Base1,Base2)) [child] merge(mro(Base1),mro(Base2),[Base1,Base2]) # 其中child继承自Base1Base2如果继承一个基类class B(A) 这时候B的mro序列为 mro(B) mro(B(A))[B] merge(mro(A) [A])[B] merge([A] [A])[B,A]如果继承至多个基类class B(A1,A2,A3) mro(B) mro( B(A1, A2, A3 …) )[B] merge( mro(A1), mro(A2), mro(A3) ..., [A1, A2, A3] )...计算结果为列表列表中至少有一个元素即类自己如上述示例[A1,A2,A3],merge操作是C3算法的核心 表头和表尾 表头   列表的第一个元素 表尾   列表中表头以外的元素集合可以为空 示例   列表[A, B, C]   表头是A表尾是B和C 列表之间的操作 操作 [A] [B] [A, B] 以下的计算中默认省略 如计算merge( [E,O], [C,E,F,O], [C] ) 有三个列表 ① ② ③ merge不为空取出第一个列表列表①的表头E进行判断 各个列表的表尾分别是[O], [E,F,O]E在这些表尾的集合中因而跳过当前当前列表 取出列表②的表头C进行判断C不在各个列表的集合中因而将C拿出到merge外并从所有表头删除merge( [E,O], [C,E,F,O], [C]) [C] merge( [E,O], [E,F,O] ) 进行下一次新的merge操作 ...... ---------------------计算mro(A)方式 mro(A) mro( A(B,C) )原式 [A] merge( mro(B),mro(C),[B,C] )mro(B) mro( B(D,E) ) [B] merge( mro(D), mro(E), [D,E] ) # 多继承 [B] merge( [D,O] , [E,O] , [D,E] ) # 单继承mro(D(O))[D,O] [B,D] merge( [O] , [E,O] , [E] ) # 拿出并删除D [B,D,E] merge([O] , [O]) [B,D,E,O]mro(C) mro( C(E,F) ) [C] merge( mro(E), mro(F), [E,F] ) [C] merge( [E,O] , [F,O] , [E,F] ) [C,E] merge( [O] , [F,O] , [F] ) # 跳过O拿出并删除 [C,E,F] merge([O] , [O]) [C,E,F,O]原式 [A] merge( [B,D,E,O], [C,E,F,O], [B,C]) [A,B] merge( [D,E,O], [C,E,F,O], [C]) [A,B,D] merge( [E,O], [C,E,F,O], [C]) # 跳过E [A,B,D,C] merge([E,O], [E,F,O]) [A,B,D,C,E] merge([O], [F,O]) # 跳过O [A,B,D,C,E,F] merge([O], [O]) [A,B,D,C,E,F,O] ---------------------转载于:https://www.cnblogs.com/lifangzheng/p/11314321.html
http://www.sadfv.cn/news/342539/

相关文章:

  • 免费企业网站源码学校网站的建设论文
  • 网站课程设计报告政务网站集约化建设
  • 金融企业网站php源码中国设计联盟网服务特点
  • 公司网站条形码如何做中企动力是正规公司吗
  • 手机门户网站哪些网站可以接单做
  • zepto网站开发怎么建立网站 个人热点
  • 工厂型企业做网站免费申请微信收款码
  • 搜索网站仿站彩票网站怎么做代理
  • 公司网站开发需要什么证书自己做动画网站
  • 广州网站建设360元临武县网站建设专业
  • 网站自适应手机转码永久的海外域名
  • 企业多语言网站开源做网站站长
  • 北京网站建站系统平台网站建设与规划结课论文
  • 音乐网站开发分享域名备案官网
  • 修改网站源码连接数据库怎么做深圳建设局投标网站
  • 网站建设模式有哪些成都电商网站
  • 哪里有免费的网站模板下载 迅雷下载 迅雷下载软件夫唯seo教程
  • 长沙做网站报价wordpress怎么调用简码
  • 保护区门户网站建设制度纯静态网站seo
  • wordpress建站做客户端网站404页面编写
  • 网站开发行业工作交接交接哪些济南华企立方 网站
  • 天猫网站建设的优势有哪些商品网站模板
  • 三维培训学费一般多少泉州网站建设优化
  • 怎么查看网站点击量1688阿里巴巴官方网站
  • 网站建设代码编译的问题及解决方案做外汇看的网站
  • 网站设置文件夹权限设置wordpress的编辑器插件
  • 网站建设流程怎么样一对一视频直播app开发
  • 网站开发的最初阶段包括wordpress如何上传文件
  • 在线搭建网站网站备案 历史
  • 网站定制网页设计网站建设包括哪些知识