继承是创建新类的方法,以下是几个概念

父类,基类,超类: 被继承的类

子类,派生类:继承而产出的类

单继承:继承一个父类

多继承:继承多个父类

继承: 什么是什么的关系

父类中没有的属性,在字类中出现就叫派生方法

如果字类中有的方法,就用子类的,如果没有就用父类的,如果父类也没有,就报错  子类---父类

如果子类和父类都有的方法,但还需要调用父类的方法,就需要单独调用父类的方法

classParentClass1:pass

classParentClass2:pass

class Sonclass1(ParentClass1): #Sonclass1 类继承了ParentClass1类 为单继承

pass

class Sonclass2(ParentClass1,ParentClass2): #Sonclass2继承了ParentClass1和ParentClass2 为多继承(Python独有)

pass

#通过__bases__方法,查看类的继承情况

print(Sonclass1.__bases__)print(Sonclass2.__bases__)print(ParentClass1.__bases__)print(ParentClass2.__bases__)#(,) # 确认为单继承#(, ) # 确认为多继承#(,) # 如果没有继承,默认继承object类#(,)# 如果没有继承,默认继承object类

重用性

当抽象出相同的属性或方法后,可以找到一个被继承类

例子1

#如下代码段定义了两个类,一个是老师类,一个是学生类#老师和学生类都有名字,性别,年龄等属性,也都有吃的技能,代码重复性高#所不同的是老师会教的技能,学生有学的技能

classTeacher:def __init__(self,name,age,sex):

self.name=name

self.age=age

self.sex=sexdefeat(self):print('%s is eating'%self.name)defteach(self):print('%s is teaching'%self.name)classStudent:def __init__(self, name, age, sex):

self.name=name

self.age=age

self.sex=sexdefeat(self):print('%s is eating' %self.name)defstudy(self):print('%s is studying'%self.name)

#因为老师和学生都是人类,都有名字,姓名,性别属性,也有吃的技能,所以抽象出一个父类,将这些重复性的属性和方法定义,并在子类里继承父类的属性和功能

classPerson:def __init__(self,name,age,sex):

self.name=name

self.age=age

self.sex=sexdefeat(self):print('%s is eating'%self.name)classTeacher(Person):defteach(self):print('%s is teaching'%self.name)classStudent(Person):defstudy(self):print('%s is studying'%self.name)

派生

当然子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了

#下述代码中定义了一个人类和狗类,都有姓名和年龄属性,#不同的是人类有性别属性,动物有品种属性#那么怎么解决姓名和年龄的代码重复呢

classPerson:def __init__(self,name,age,sex):

self.name=name

self.age=age

self.sex=sexclassDog:def __init__(self,name,age,kind):

self.name=name

self.age=age

self.kind= kind

# 将人和狗类进一步抽象出一个动物类,有名字,姓名的属性,在实例化对象时

Animal.__init__(self,name,age) 父类.__init(self,参数)传入共有的参数

classAnimal:def __init__(self,name,age):

self.name=name

self.age=ageclassPerson(Animal):def __init__(self,name,age,sex):

Animal.__init__(self,name,age)

self.sex=sex # 派生属性classDog(Animal):def __init__(self,name,age,kind):

Animal.__init__(self,name,age)

self.kind=kind # 派生属性

wangys= Person('wangys',18,'男')print(wangys.name)

如果既想使用父类的方法,又想使用子类的方法,需要将父类单独执行

classDog():def __init__(self,name,hp,aggr,kind):

self.name=name

self.hp=hp

self.aggr=aggr

self.kind=kinddefeat(self):

self.hp+=100

print('吃药回血')print('%s汪汪叫'%self.name)

d= Dog('d',100,10,'tady')

d.eat()print(d.hp)

classAnimal:def __init__(self,name,hp,aggr):

self.name=name

self.hp=hp

self.aggr=aggrdefeat(self):

self.hp+=100

print('吃药回血')classDog(Animal):def __init__(self,name,hp,aggr,kind):

Animal.__init__(self,name,hp,aggr)

self.kind=kinddefeat(self):

Animal.eat(self)print('%s汪汪叫'%self.name)

d= Dog('d',100,10,'tady')

d.eat()print(d.hp)

可以使用super

classAnimal:def __init__(self,name,hp,aggr):

self.name=name

self.hp=hp

self.aggr=aggrdefeat(self):

self.hp+=100

print('吃药回血')classDog(Animal):def __init__(self,name,hp,aggr,kind):

super().__init__(name,hp,aggr)

self.kind=kinddefeat(self):

super().eat()print('%s汪汪叫'%self.name)

d= Dog('d',100,10,'tady')

d.eat()print(d.hp)

多继承

python继承的特点_python面向对象三大特性之继承相关推荐

  1. python综合案例分享_Python面向对象 三大特性 综合案例+1(视频里的作业)

    class Dog: # 在创建一个小狗实例的时候,给它设置几个属性 def __init__(self, name, age = 1): self.name = name self.age = ag ...

  2. 大数据必学Java基础(四十):面向对象三大特性之一继承(Inheritance)

    文章目录 面向对象三大特性之一继承(Inheritance) 一.列举案例说明 1.类是对对象的抽象

  3. java 面向对象三大特性之继承 万字详解(超详细)

    目录 前言 : 一.为什么需要继承: 二.什么是继承(Warning : 篇幅较长)? 1.继承概述: 2.子类继承父类之后达到的效果 : ①如何使用继承? ②代码演示 : 3.继承的使用场景: eg ...

  4. C++——面向对象三大特性之继承

    文章目录 继承概念 继承的定义 继承的语法格式 继承方式 继承方式的汇总 赋值兼容规则 基类对象和派生类对象的赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 菱形继承 虚继 ...

  5. 面向对象三大特性(继承)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.今日回顾 1.<高等数学>:一节网课 2.阅读:<费马大定理>300页 3.英语:120个 ...

  6. Java面向对象三大特性(封装继承多态)解释及案例

    文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...

  7. python 封装_Python 面向对象三大特性之封装

    封装 定义:隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 将变化隔离: 便于使用: 提高复用性: 提高安全性: [封装原则] 将不需要对外提供的内容都隐藏起来: 把属性都隐藏,提供公共 ...

  8. python基础学习十四:面向对象三大特性之继承

    一.继承的基本概念 Python面向对象的继承指的是多个类之间的所属关系,即子类默认继承父类的所有属性和方法,具体如下: # ⽗类A class A(object):def __init__(self ...

  9. python面向对象三大特性之继承

    继承是创建新类的方法,以下是几个概念 父类,基类,超类: 被继承的类 子类,派生类:继承而产出的类 单继承:继承一个父类 多继承:继承多个父类 继承: 什么是什么的关系 父类中没有的属性,在字类中出现 ...

最新文章

  1. Objective-C 文件夹操作
  2. python post请求参数为list_浅谈python3发送post请求参数为空的情况
  3. mysql group by与order by的研究--分类中最新的内容
  4. 别再叫我“老工”!!!工程师姓什么很重要!
  5. 安卓效率微商_微商人脉通app下载-微商人脉通 安卓版v2.5.5-PC6安卓网
  6. ibatis+Castle.MCV 版 NPetshop3
  7. zz乱码、编码问题详
  8. Stm32:地址空间划分
  9. atitit  opencv apiattilax总结 约500个函数 .xlsx
  10. gwt 同步和异步_使用GWT和RESTful Web服务构建动态的组织树
  11. 关于DBF文件格式的详细说明
  12. 3.Android学习之常用UI组件(一)
  13. js编程中常用术语-中英对照
  14. android开发面试题!微信小程序趋势及前景,社招面试心得
  15. win7电脑桌面图标和下方任务栏都消失了怎么办
  16. 红帽RHCE考试 VSFTP强化实战
  17. webpack中处理css文件
  18. “争议话题”事件营销成败与否的关键
  19. 生产者与消费者问题?
  20. openEuler 部署 hive3

热门文章

  1. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)--有BUG,注意看我的备注
  2. 为什么使用累积分布函数处理后像素值会均匀分布_亿万级数据处理的高效解决方案
  3. 不仅有骁龙8 Plus!摩托罗拉新旗舰还要抢首发2亿像素
  4. 黄光裕回应与京东、拼多多竞争:谁也灭不了谁 不排除合作的可能性
  5. 董明珠谈接班人标准:不看亲属、朋友关系,只看一点
  6. 特斯拉Autopilot系统被评为中国最佳驾驶辅助系统
  7. iPhone 12 mini被质疑锁屏触摸不灵
  8. 全球首发联发科天玑1000+手机发布:售价2198元起!
  9. 前置仓没活路?盒马mini要做行业终极目标还为时尚早
  10. 第四代双模5G旗舰:vivo X30系列为啥「超有梗」?