1. # 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类,
  2. # 父类又可以称为基类或者超类,新建的类可以称为派生类,子类
  3. class ParentClass1:
  4. # 定义父类 1
  5. pass
  6. class ParentClass2:
  7. # 定义父类 2
  8. pass
  9. class SubClass1(ParentClass1):
  10. # 继承一个父类
  11. pass
  12. class SubClass2(ParentClass1,ParentClass2):
  13. # 继承两个父类
  14. pass
  15. print(SubClass1.__bases__) # 查看父类
  16. print(SubClass2.__bases__)
  17. class Animal:
  18. def eat(self):
  19. print("%s is eating" %self.name)
  20. def drink(self):
  21. print("%s is drinking" % self.name)
  22. def shit(self):
  23. print("%s is shiting" %self.name)
  24. def pee(self):
  25. print("%s is peeing" %self.name)
  26. # 子类可以使用父类的函数属性和数据属性
  27. class Cat(Animal):
  28. def __init__(self,name):
  29. self.name = name
  30. self.breed = "猫"
  31. def cry(self):
  32. print("喵喵叫")
  33. class Dog(Animal):
  34. def __init__(self,name):
  35. self.name = name
  36. self.breed = "狗"
  37. def cry(self):
  38. print("汪汪叫")
  39.  
  40. c1 = Cat("小白家的黑猫")
  41. c1.eat()
  42. # 当前类中如果没有eat属性,就会去父类中找
  43.  
  44. c2 = Cat("小黑家的白猫")
  45. c2.drink()
  46.  
  47. d1 = Dog("胖子家的瘦狗")
  48. d1.eat()
  49. # 如果子类中有和父类中相同的属性,会优先使用子类中的属性(如果没有特殊说明)
  50. # 因此,我们在开发的过程中,如果定义了一个类A,然后想重新建立一个类B,而且
  51. # B的很多功能和A是相同的,我们只需要把A继承过来,然后在B中写一写不一样的功能
  52. # 就可以了
  53. # 注意当有继承的时候,一定要注意属性查找
  54. class F:
  55. def f1(self):
  56. print("F.f1")
  57. def f2(self):
  58. print('F.f2')
  59. self.f1()
  60. class S(F):
  61. def f1(self):
  62. print("S.f1")
  63. s = S()
  64. s.f2()
  65. # 我们来看一下代码执行过程
  66. # s为一个对象--要执行f2方法--自己的类中没有--在父类中找--父类中有--
  67. # 注意;父类中这个self是s--打印F.f2--然后执行f1,--先在自己类中找,--
  68. # 找到了--打印S.f1
  69. # 假如我们在子类中相用父类的方法,两种办法
  70. # 一,直接用类名即:父亲名.方法名()
  71. # 二,super()
  72. class Animal:
  73. def __init__(self,name,age,gender):
  74. self.name = name
  75. self.age = age
  76. self.gender = gender
  77.  
  78. class people(Animal):
  79. def __init__(self,name,age,gender):
  80. Animal.__init__(self,name,age,gender)
  81. class Cat(Animal):
  82. def __init__(self,name,age,gender):
  83. # 这是不用传入对象本身,
  84. # super()相当于super(Cat,self)
  85. super().__init__(name,age,gender)
  86. peo = people('wangcong',21,'mal')
  87. cat = Cat('cat',2,'male')
  88. print(peo.name,cat.name) # wangcong cat
  89. # 最后总结一点,有关组合和继承,
  90. # 1,人是动物,猫是动物,这就是继承关系,
  91. # 2,学校有教室,学生有书本。这就是组合关系,
  92. # 一个类在另一个类中,一个对象跟另一个对象有关系
  93. # 简单看一下组合
  94. list1 = list() # 我们之前说list是一个类,用来实例化一个对象
  95. str1 = "hello" # 同样str1也是一个字符串对象
  96. list1.append(str1)
  97. print(list1)
  98. # 此时,他们之间就是组合关系

python基础--面向对象之继承的更多相关文章

  1. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  2. python基础——面向对象进阶下

    python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...

  3. python基础——面向对象进阶

    python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...

  4. python基础——面向对象的程序设计

    python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  5. Python 基础 面向对象之二 三大特性

    Python 基础 面向对象之二 三大特性 上一篇主要介绍了Python中,面向对象的类和对象的定义及实例的简单应用,本篇继续接着上篇来谈,在这一篇中我们重点要谈及的内容有:Python 类的成员.成 ...

  6. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)

    python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...

  7. python之面向对象(继承)

    类的继承 python之面向对象(继承) 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法 c ...

  8. Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

    本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.   ...

  9. python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

    一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...

随机推荐

  1. eclipse error pages 打红X的解决方法

    建一个Maven项目转为web项目的时候,这里总有这么多文件,而且还会有一个Error Pages的错红的红叉,看着很不爽. 虽然项目中没有出现过错误,感觉是个错误,解决方法如下.原来这是eclips ...

  2. spring cache 几个注解解释

    转自https://www.cnblogs.com/fashflying/p/6908028.html 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管 ...

  3. keep-alive实现返回保留筛选条件及筛选结果

    实现页面返回时,保留筛选条件和筛选结果 说明 . keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM 实现 结合router实现部分页面缓存 模板应用 ...

  4. js array map() 函数的简单使用

    语法: array.map(function(currentValue,index,arr), thisValue) currentValue:必须.当前元素的值 index:可选.当前元素的索引值 ...

  5. 在linux安装php

    去www.php.net找下载最新的版本 http://www.php.net/downloads.php 下载解压 # wget  http://cn2.php.net/distributions/ ...

  6. 悲观锁,乐观锁以及MVCC

    在上文中,我们探讨了MySQL不同存储引擎中的各类锁,在这篇文章中我们将要讨论的是MySQL是如何实现并发控制的.并发问题有三种,分别为: 读-读,不存在任何问题 读-写,有隔离性问题,可能遇到脏读( ...

  7. 排序(sort)

    1.定义 排序 所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来.其确切定义如下: 输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn. 输出:Ril ...

  8. JavaScript 的基本概念( ES5 )

    语法 区分大小写 标识符 第一个字符必须是一个字母,下划线或者一个美元符( $ ).其他规则无论,最好按照通用的驼峰大小写. 注释 // 单行注释 /* 多行注释 */ 严格模式 在顶部添加如下代码 ...

  9. 我不熟悉的string类

    我不常用的string函数 多的不说,直接上: assign函数 string& assign(const char *s); //把字符串s赋给当前的字符串 string& assi ...

  10. JavaWeb_(SSH论坛)_四、页面显示

    基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 帖子表与回复表 ...