• Python 知识要点:继承


    面向对象的三个特性:

    1. 封装,根据职责将属性和方法封装到一个抽象的类中。(定义类的准则)
    2. 继承,实现代码的重用,相同代码不需要重复的编写。(设计类的技巧)
    3. 多态,不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度。

    单继承

    子类拥有父类的所有方法和属性。

    语法:class 类名A(父类名B):

    子类继承自父类,可以直接使用父类中已经封装好的方法,不需要再次开发。

    子类应该根据职责,封装子类特有的属性和方法。

    A类是B类的子类,B类是A类的父类,A类从B类继承。

    A类是B类的派生类,B类是A类的基类,A类从B类派生。

    【继承的传递性】

    C类从B类继承,B类又从A类继承,那么C类就具有B类和A类的所有属性和方法

    子类拥有父类,以及父类中封装的所有属性和方法

    多继承

    子类可以拥有多个父类,并且具有所有父类的属性和方法

    语法:class 子类名(父类名1, 父类名2, ...):

    【注】:父类之间存在同名的属性或方法,应该尽量避免使用多继承

    【不使用继承开发动物和狗】

    class Anima:
        def eat(self):
            print("")
    
        def drink(self):
            print("")
    
        def run(self):
            print("")
    
        def sleep(self):
            print("")
    
    
    class Dog:
        def eat(self):
            print("")
    
        def drink(self):
            print("")
    
        def run(self):
            print("")
    
        def sleep(self):
            print("")
    
        def bark(self):
            print("")
    
    
    dog = Dog()
    dog.bark()
    dog.drink()
    dog.eat()
    dog.run()
    dog.sleep()

    【使用继承开发动物和狗】

    class Anima:
        def eat(self):
            print("")
    
        def drink(self):
            print("")
    
        def run(self):
            print("")
    
        def sleep(self):
            print("")
    
    
    class Dog(Anima):
        def bark(self):
            print("")
    
    
    class HaShiQi(Dog):
        def fly(self):
            print("")
    
        # 子类方法重写
        def bark(self):
            # 1.子类特有需求代码
            print("汪汪汪")
    
            # 2.使用super(). 调用原本父类中封装的方法
            super().bark()
    
            # 3.增加其他子类的代码
            print("f!#df @#@#!#gfg")
    
    
    dog = HaShiQi()
    # 如果子类中,重写了父类的方法
    # 在使用子类对象调用方法时,会调用子类重写后的方法
    dog.bark()
    dog.drink()
    dog.eat()
    dog.run()
    dog.sleep()
    dog.fly()

    【多继承】

    class A:
        def test(self):
            print("A--test 方法")
    
        def demo(self):
            print("A--demo 方法")
    
    
    class B:
        def demo(self):
            print("B--demo 方法")
    
        def test(self):
            print("B--test 方法")
    
    
    class C(A, B):
        """多继承可以让子类对象,同时具有多个父类的属性和方法"""
        pass
    
    
    # 创建子类对象
    c = C()
    
    # 父类之间方法属性同名时,调用第一个父类的方法属性
    c.test()
    c.demo()
    
    # 确定C类对象调用方法的顺序
    # object是所有类的父类(基类)
    print(C.__mro__)
    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    Linux设置系统时间并同步到硬件
    centos6.9安装mysql5.7.22并设置初始密码
    mysql修改数据库文件存储位置
    mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
    mysql1.6(主从同步,数据读写分离)
    Mysql1.5(binlog增量备份与恢复,innobackupex)
    Mysql1.4(用户授权,权限撤销;图形管理工具,数据备份-恢复)
    MYSQL1.3(存储引擎,数据导入导出,管理表记录)
    MYSQL1.2(字段管理,索引类型)
    mysql1.1(搭建,数据类型,基本使用)
  • 原文地址:https://www.cnblogs.com/dc2019/p/13184962.html
Copyright © 2020-2023  润新知