zoukankan      html  css  js  c++  java
  • day24 01 初识继承

    day24 01 初识继承

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

    一、继承的概念

    继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类

    class A:  # 父类,基类,超类
        pass
    class B:  # 父类,基类,超类
        pass
    class A_son(A,B):  # 子类,派生类
        pass
    class AB_son(A,B):  # 子类,派生类
        pass
    • 一个类可以被多个类继承,先有父类才有子类
    • 一个类可以继承多个父类----只在python里面才可以,其他语言不可以

    注意:从父类不能知道自己将会被哪个类继承,但是从子类肯定可以知道自己的父类,这是从子类像父类指向单方向线程

    二、父类的查看方法

    类似于对像可以使用_dict_方法查看属性,子类也可以使用_bases_方法查看它的父类

    class A:  # 父类,基类,超类
        pass
    class B:  # 父类,基类,超类
        pass
    class A_son(A):  # 子类,派生类
        pass
    class B_son(A,B):  # 子类,派生类
        pass
    class AB_son(A,B):  # 子类,派生类
        pass
    print(A_son.__bases__)
    print(B_son.__bases__)
    print(AB_son.__bases__)
    print(A.__bases__)
    print(B.__bases__)

    运行结果:

    C:Userssku1-1PycharmProjectsuntitledvenvScriptspython.exe "C:/Users/sku1-1/PycharmProjects/untitled/day24  01 初识继承.py"
    (<class '__main__.A'>,)
    (<class '__main__.A'>, <class '__main__.B'>)
    (<class '__main__.A'>, <class '__main__.B'>)
    (<class 'object'>,)
    (<class 'object'>,)
    
    Process finished with exit code 0

    从上面的运行结果可以看到,特别的父类A和B的父类都是‘object’,如果没有继承父类,就默认继承‘object’,这也是python3的新式类

    三、继承表达的关系:什么是什么的关系

           只有是两个类之间才会产生继承的关系,两个类之间存在一些共同的抽象的东西,将这些共同的东西抽象出来就可以成为这两个类的父类

      以之前的人狗大战的游戏为例,里面的人物角色与狗的角色,定义它们的类的时候,里面有一些属性是相同的,比如:name,blood,aggr,而且狗和人都是动物,这样就可以抽象出它们的父类---animal,参考以下代码:

    class animal:  # 父类
        def __init__(self,name,blood,aggr):
            self.name=name
            self.blood=blood
            self.aggr=aggr
    class dog(animal):  # 子类
        def bite(self,someone):
            someone.blood-=self.aggr
    class someone(animal):  # 子类
        def attack(self,dog):
            dog.blood -=self.aggr
    
    dog1 = dog('溜溜球',200,500)
    print(dog1.name)
    person1 = someone('王昭君',300,500)
    print(person1.name)

    运行结果:

    溜溜球
    王昭君
  • 相关阅读:
    About “condition variables”
    路由表的读法(zz)
    C++字符串之一(字符表示)
    Audio Codec Summary
    关于telnet
    C++ 之 new
    (转)让ubuntu9.10开机自动挂载NTFS分区
    WorkSpace And Static Library In GarbageXcode4
    mac os x 10.7下配置svn服务器
    ubuntu下设置双显示器扩展桌面
  • 原文地址:https://www.cnblogs.com/wxm422562/p/10887355.html
Copyright © 2011-2022 走看看