博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
继承(初识继承,继承的进阶)
阅读量:5173 次
发布时间:2019-06-13

本文共 1773 字,大约阅读时间需要 5 分钟。

1,面向对象的三大特性:继承,多太,封装

  • 1.1>继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个个父类,父类又可成为基类或超类,新建的类称为子类或派生类.
class Animal:    breath = "呼吸"    def __init__(self, name, sex, age):        self.name = name        self.sex = sex        self.age = ageclass Cat(Animal):  # 括号里边的叫父类,基类,超类,括号外面的是子类和派生类    def __init__(self):        pass    def jiao(self):        print("喵喵叫")

2,初识继承:

  2.1>子类以及子类实例化对象也可以访问父类的恩和方法或变量.

    2.1.1子类实例化访问父类的方法:

结果如下:

  • 访问父类中的变量   print(d.breath).............................................此时打印的结果是:呼吸
    • 2.1.2>子类可以访问父类的所有内容
      • print(Dog.breath).....................................此时打印的结果是:呼吸
      • print(Dog.pao())........................................此时打印的结果是:都可以奔跑

3,查询顺序:

4,通过子类对象去只执行父类的方法:子类中不要定义与父类同名的方法

  • 通过子类对象去只执行子类的方法:只需要在子类建立这个方法
  • 既要执行子类的方法,又要执行父类的方法有以下2中方法:
class Animal:    breath = "呼吸"    def __init__(self, name, sex, age):        self.name = name        self.sex = sex        self.age = ageclass Cat(Animal):  # 括号里边的叫父类,基类,超类,括号外面的是子类和派生类    def __init__(self, name, sex, age, paws):  # 第一种方法引用父类类名去执行父类中的构方法        super().__init__(name, sex, age, )  # 第二种用super.()内置函数去执行父类中方法        self.paws = paws    def jiao(self):        print("喵喵叫")c = Cat("加菲猫","公",2,"梅花爪")print(c.__dict__)  # 此时打印的结果是{"name":"加菲猫","sex":"公","age":2,"paws":"梅花爪"} 

5,继承的进阶

  • 5.1>继承的分类:单继承,多继承
    • 单继承:一个父类对应一个子类
    • 多继承:一个子类与多个父类想对应
  • 5.2>类的分类:经典类,新式类
    • 新式类:凡是继承object类都是新式类,在python3x中所有的类都是新式类,因为python3x中的类都默认继承object
    • 经典类:不继承object类都是经典类,在python2x中(既有新式类,又有经典类)所有类默认都不继承object类,所有的类都是经典类,你可以让其继承object类,在类名后加一个(object)即可
  • 新式类,经典类查询顺序一样
  • 5.3>多继承:
    • 新式类:遵循广度优先
    • 经典类:遵循深度优先
  • 多继承的新式类:广度优先,一条道走到倒数第二级,判断,如果其他路能走到终点,则返回走另一条路,如果不能,则走到终点.广度优先可以用类名.mro()去查询广度优先的路径print(F.mro())

  多继承经典类 深度优先:一条路走到底

 

  • 5.4>继承到的好处:
    • 1>提高了代码的服用率
    • 2>提高了代码的维护性
    • 3>让类与类之间产生了关系,是多的态前提     

转载于:https://www.cnblogs.com/ljc-0923/p/9378728.html

你可能感兴趣的文章
Lua 5.1 for Delphi 2010
查看>>
JavaScript实践心得
查看>>
Office2019 VOL版本 自定义安装组件
查看>>
Nodepad++替换中文字符
查看>>
数据结构作业——图的存储及遍历(邻接矩阵、邻接表+DFS递归、非递归+BFS)...
查看>>
重定向与转发
查看>>
大衍数列
查看>>
C#中WinForm的textbox回车问题
查看>>
解决insmod: error inserting 'helloworld.ko': -1 Invalid module format(转)
查看>>
数据库--循环语句:while loop/end loop
查看>>
switch和if语句
查看>>
【Oracle】Oracle中常用的系统函数
查看>>
HDU1574 RP问题
查看>>
单词记忆(1)
查看>>
MongoDB
查看>>
如何通过SQL命令查看数据库的文件大小[转]
查看>>
JavaScript 条件语句
查看>>
Android腾讯微薄客户端开发十二:博主的偶像
查看>>
ReShaper工具
查看>>
[USACO15DEC]最大流Max Flow
查看>>