zoukankan      html  css  js  c++  java
  • OOP三大特性

    一、继承简介

    #1、什么是继承
        一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类基类超类
        继承的特性:子类可以使用父类的所有 方法和 属性
    #为什么用继承
        减少类与类之间代码冗余
    
    #3、python支持多继承,用逗号分隔开多个继承的类
    
    #4、如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。
    #继承与抽象(先抽象再继承)
    
    抽象:抽取类似或比较像的部分,
         它的作用是划分类别,抽象只是分析过程中的一种技巧,通过抽象可以得到类
    
    继承:是基于抽象的结果,
    
    派生:子类拥有与父类不同的内容
    
    覆盖:子类与父类拥有完全相同的名称
    继承与抽象

    二、方法的重写

    #如果父类的方法不能满足需求时,可以对方法进行 重写
    
    #重写父类的方法有两种:
    #1)覆盖父类的方法
        在子类中定义与父类同名的方法(按属性的查找顺序看,不会再调用父类中同名的方法)
    #2)对父类的方法进行  扩展    
            在需要的位置使用super()父类的方法名来调用父类的方法
            针对子类的需求,编写子类的方法
    class Animal:
        def __init__(self,name,age):
            self.name = name
            self.age = age
    class Dog(Animal):
        def __init__(self,name,age,sex):     #添加自己需要的属性
            super().__init__(name,age)
            self.sex = sex
    dog1 = Dog('ALEX',18,'male')
    print(dog1.__dict__)
    super()

    三、在继承背景下属性的查找顺序

    #在单继承背景下属性查找的优先级:对象--->对象的类--->父类--->父父类
    #在多继承背景下属性查找的优先级:对象--->对象的类--->按照从左往右的顺序
    #新式类与经典类(在py2中才区别新式类和经典类)
    
    #新式类:直接或间接继承了object的类,都是新式类
        在py3中   如果没有指定父类,默认就会继承object
        #即py3中所有的类都是新式类
    
    #经典类:没有继承object的类的类,以及该类的子类,都是经典类
    #MRO(method resolution order)方法解析顺序
    #获得某个类的MRO列表。
    
    class Foo:
        def f1(self):
            print('from foo f1')
    
        def f2(self):
            print('from foo f2')
            self.f1()
    class Bar(Foo):
        def f1(self):
            print('from bar f1')
    s = Bar()
    s.f2()
    
    print(Bar.mro())
    严格按照mro列表顺序执行
  • 相关阅读:
    Tomcat安装(安装版)
    Selenium自动化测试(一)之环境搭建
    Windows快速启动应用高效搜索文件工具-Listary
    Python3之jsonpath使用和json转换
    Python3操作SQLite数据库
    初识面向对象
    忘记虚拟机中Linux的登录密码解决办法
    win10自带虚拟机的使用(Hyper-v)
    nigx下配置tp5.1路由
    PHP无限极菜单
  • 原文地址:https://www.cnblogs.com/pdun/p/11252461.html
Copyright © 2011-2022 走看看