1. # class Animal:
  2. # breath = '呼吸'
  3. #
  4. # def __init__(self, name, sex, age):
  5. # self.name = name
  6. # self.sex = sex
  7. # self.age = age
  8. #
  9. # def eat(self):
  10. # print(self)
  11. # print('动物都需要进食....')
  12. #
  13. #
  14. # class Person(Animal): # 括号里面的 父类,基类,超类 括号外面的 子类,派生类.
  15. # pass
  16. #
  17. #
  18. # class Cat:
  19. # pass
  20. #
  21. #
  22. # class Dog:
  23. # pass
  24. #
  25. #
  26. # p1 = Person('alex', 'laddyboy', 1000)
  27. # print(p1.__dict__)
  28.  
  29. # 初识继承:
  30. # 子类以及子类实例化的对象 可以访问父类的任何方法或变量.
  31. # 类名可以访问父类所有内容
  32. # print(Person.breath)
  33. # Person.eat(111)
  34. # 子类实例化的对象也可以访问父类所有内容
  35. # print(p1.breath)
  36. # print(p1)
  37. # p1.eat()
  1. class Animal:
  2.  
  3. def __init__(self, name, sex, age):
  4. self.name = name
  5. self.sex = sex
  6. self.age = age
  7.  
  8. def eat(self):
  9. print('%s吃' % (self.name))
  10.  
  11. def drink(self):
  12. print('%s喝东西' % (self.name))
  13.  
  14. class Cat(Animal):
  15.  
  16. def miaow(self):
  17. print('喵喵叫')
  18. # def eat(self): # 只执行自己类中的方法
  19. # print(666)
  20.  
  21. class Brid(Animal):
  22.  
  23. def __init__(self, name,sex,age,wing): # self b1对象 name '鹦鹉',sex '公',age 20, wing '绿翅膀'
  24. '''
  25. self=b1对象
  26. name='鹦鹉'
  27. sex=''
  28. age= 20,
  29. wing='绿翅膀'
  30. '''
  31. # Animal.__init__(self, name, sex, age)
  32. super().__init__(name,sex,age) # super(Brid,self).__init__(name,sex,age)
  33. self.wing = wing
  34. def bark (self):
  35. print('嗷嗷叫')
  36.  
  37. def eat(self):
  38. super().eat()
  39. print('鸟吃虫子...')
  40.  
  41. class Chook(Animal):
  42. def crow(self):
  43. print('大爷laiwanya')
  44. # cat1 = Cat('tom','公', 3)
  45. # # cat1.eat()
  46. # 只执行父类的方法:子类中不要定义与父类同名的方法
  47. # 只执行子类的方法:在子类创建这个方法.
  48. # 既要执行子类的方法,又要执行父类的方法?
  49. # 有两种解决方法.
  50. # 1,Animal.__init__(self, name, sex, age)
  51. # 1,super().__init__(name,sex,age)
  52. # cat1 = Cat('tom','公', 3,)
  1. # 继承的进阶
    # 继承: 单继承,多继承.
  2.  
  1. # 类: 经典类, 新式类
    # 新式类: 凡是继承object类都是新式类.
    # python3x 所有的类都是新式类,因为python3x中的类都默认继承object.
    # class A:
    # pass
    # 经典类: 不继承object类都是经典类
    #python2x:(既有新式类,又有经典类) 所有的类默认都不继承object类,所有的类默认都是经典类.你可以让其继承object.
  2.  
  3. # 单继承: 新式类,经典类查询顺序一样.
  4.  
  1. # 多继承:
    # 新式类: 遵循广度优先.
    # 经典类: 遵循深度优先.
  2.  
  3. # 多继承的新式类 广度优先 : 一条路走到倒数第二级,判断,如果其他路能走到终点,则返回走另一条路.如果不能,则走到终点.
  4.  
  1. # class A:
  2. # def func(self):
  3. # print('IN A')
  4. #
  5. # class B(A):
  6. # pass
  7. # # def func(self):
  8. # # print('IN B')
  9. #
  10. # class C(A):
  11. # pass
  12. # # def func(self):
  13. # # print('IN C')
  14. #
  15. # class D(B):
  16. # pass
  17. # # def func(self):
  18. # # print('IN D')
  19. #
  20. # class E(C):
  21. # pass
  22. # # def func(self):
  23. # # print('IN E')
  24. #
  25. # class F(D,E):
  26. # pass
  27. # # def func(self):
  28. # # print('IN F')
  29. #
  30. # f1 = F()
  31. # f1.func()
  32.  
  33. # class A:
  34. # def func(self):
  35. # print('IN A')
  36. #
  37. # class B(A):
  38. # pass
  39. # # def func(self):
  40. # # print('IN B')
  41. #
  42. # class C(A):
  43. # pass
  44. # # def func(self):
  45. # # print('IN C')
  46. #
  47. # class D(B):
  48. # pass
  49. # # def func(self):
  50. # # print('IN D')
  51. #
  52. # class E(C):
  53. # def func(self):
  54. # print('IN E')
  55. #
  56. # class F(D,E):
  57. # pass
  58. # # def func(self):
  59. # # print('IN F')
  60. #
  61. # f1 = F()
  62. # f1.func()
  63. #
  64. # print(F.mro()) # 查询类的继承顺序
  1. # 多继承的经典类 深度优先 : 一条路走到底.

python day18--面向对象,继承的更多相关文章

  1. Python之面向对象继承和派生

    Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...

  2. 【学习笔记】--- 老男孩学Python,day18 面向对象------继承

    继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类, 父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Fathe ...

  3. python小兵 面向对象继承super和c3算法

    python多继承 在前面的学习过程中. 我们已经知道了Python中类与类之间可以有继承关系. 当出现了x是一种y的的时候. 就可以使⽤继承关系. 即"is-a" 关系. 在继承 ...

  4. Python之面向对象继承复习

    总结:self是谁就从谁开始寻找

  5. python中多继承C3算法研究

    在python的面向对象继承问题中,单继承简单易懂,全部接受传承类的属性,并可添加自带属性, 但是,在多继承情况下,会遇到多个被继承者的顺序问题,以及多次继承后查找前几次继承者需求属性时,可能不易发现 ...

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

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

  7. Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

    一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强…” 什么是面 ...

  8. python学习日记(面向对象——继承)

    什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Par ...

  9. Python学习(七)面向对象 ——继承和多态

    Python 类的继承和多态 Python 类的继承 在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新 ...

  10. 《Python》 面向对象三大特性之继承

    一.继承大纲: 继承和抽象(两个概念) 1.单继承: 语法: 父类.基类.超类 子类.派生类 继承与重用:子类可以使用父类中的名字(变量和方法) 继承与派生:子类在父类的基础上又新创建了自己需要的方法 ...

随机推荐

  1. MyBatis注解方式批量插入操作

    @Insert({ "<script>", "insert into table_name(column1, column2, column3) values ...

  2. sqlserver group by后获取其他字段(多种方法)

    大家都知道用group by的话,select 后面指定的字段必须与group by后面的一致.group by 只有个别字段,如果拿出其他未分组的字段信息呢?在网上搜了下, 总结如下: 使用了gro ...

  3. Mysql 数据类型、约束类型

    mysql数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型.   数值类型 MySQL支持所有标准 ...

  4. mysql密码的查看/修改

    2.Mysql的Root密码忘记----查看或修改方法 2.1)启动命令行:windows微标键+R 2.2)在命令行输入taskkill /f /im mysqld.exe 回车,暂停Mysql服务 ...

  5. 剑指offer(59)按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目分析 这道题还是需要画图分析,不然不好找 ...

  6. 用bytomswap进行“跨链”资产转换

    bytom是专注资产领域的公有区块链平台,最近开发者社区基于比原做了一款资产转换平台.我们可以在上面通过自己现有的资产在比原上发行资产.然后达到资产转换的目的. 一. 以太币资产转换成比原上的资产 首 ...

  7. HDU2476 String painter——区间DP

    题意:要把a串变成b串,每操作一次,可以使a串的[l,r]区间变为相同的一个字符.问把a变成b最少操作几次. 这题写法明显是区间dp ,关键是处理的方法. dp[l][r]表示b串的l~r区段至少需要 ...

  8. JavaScript的Let用法

    let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值. 描述 let 允许你声明一个作用域或被限制在块级中的变量.语句或者表达式. 与var不同的是,它声明的变量只能是全局或者整个函 ...

  9. _pvp

    comment 备注 zone 区域ID,.gps第二个参数 area 地域ID,.gps第三个参数 type 区域类型(保持原状.安全区.自由PVP.自由PVP - 禁止组队.自定义阵营(_fact ...

  10. 【Core内存】.NET Core 2.0中使用MemoryCache

    说到内存缓存大家可能立马想到了HttpRuntime.Cache,它位于System.Web命名空间下,但是在ASP.NET Core中System.Web已经不复存在.今儿个就简单的聊聊如何在ASP ...