• 技术文章 >Python技术 >Python高级

    Python中类的继承是什么

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-06-28 16:00:08原创3832

    一、继承的概念

    在现实生活中,继承一般指的是子女继承父辈的财产,在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物;同理,波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承足够,如下如所示:

    qqq.png

    二、继承的示例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    class Cat(object):

        def __init__(self,name,color="白色"):

            self.name = name

            self.color = color

        def run(self):

            print("%s:在跑"%self.name)

    class Bosi(Cat):

        def setNewName(self,newName):

            self.name = newName

        def eat(self):

            print("%s:在吃"%self.name)

    bs = Bosi("波斯猫")

    print("bs的名字是:%s,颜色是:%s"%(bs.name,bs.color))

    bs.eat()

    bs.setNewName("汤姆猫")

    bs.run()

    运行结果为:

    1

    2

    3

    bs的名字是:波斯猫,颜色是:白色

    波斯猫:在吃

    汤姆猫:在跑

    相关推荐:《Python视频教程

    说明:

    1.虽然子类没有定义__init__()方法,但是父类有。所以在子类集成父类的时候这个方法就被继承了,所以只要创建Bosi的对象,就默认执行了那个继承过来的__init__()方法。

    2.子类在继承的时候,在定义类时,小括号()中为父类的名字。

    3.父类的所有非私有的属性、方法、会被继承给子类。

    注意:

    1.私有的属性,不能通过对象直接访问,但是可以通过方法访问。

    2.私有的方法,不能通过对象直接访问。

    3.私有的属性、方法,不会被子类继承,也不能被访问。

    4.一般情况下,私有的属性、方法都是不对外公布的,往往用来做内部的事情,起到安全的作用。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    class Animal(object):

        def __init__(self, name = "动物",color = "白色"):

            self.__name = name

            self.color = color

         

        def __test1(self):

            print(self.__name)

            print(self.color)

        def test2(self):

            print(self.__name)

            print(self.color)

    class Dog(Animal):

        def dogTest1(self):

            #不能访问父类的私有属性:AttributeError: 'Animal' object has no attribute '__name'

            #print(self.__name)

            print(self.color)

        def dogTest2(self):

            #self.__test1()

            self.test2()

    A = Animal()

    #print(A.__name)

    print(A.color)

    #不能访问父类的私有方法:AttributeError: 'Animal' object has no attribute '__test1'

    #A.__test1()

    A.test2()

    print("-----------------分割线-----------------")

    D = Dog(name="阿黄",color = "黄色")

    D.dogTest1()

    D.dogTest2()

    运行结果为:

    1

    2

    3

    4

    5

    6

    7

    白色

    动物

    白色

    -----------------分割线-----------------

    黄色

    阿黄

    黄色

    三、多继承

    www.png

    从图中能够看出,所谓多继承,即子类有多个父类,并且具有它们的特征。

    Python中多继承的格式如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    class A:

        def printA(self):

            print("---A---")

    class B:

        def printB(self):

            print("---B---")

    #定义一个子类继承A,B

    class C(A,B):

        def printC(self):

            print("---C---")

    obj_C = C()

    obj_C.printA()

    obj_C.printB()

    运行结果为:

    1

    2

    ---A---

    ---B---

    说明

    1.python中是可以多继承的。

    2.父类中的方法、属性,子类会继承。

    3.如果多个父类中有同一个方法,谁写在前面就调用谁的方法。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    class A:

        def printA(self):

            print("---A---")

    class B:

        def printB(self):

            print("---B---")

    #定义一个子类继承A,B

    class C(A,B):

        def printC(self):

            print("---C---")

    obj_C = C()

    obj_C.printA()

    obj_C.printB()

    #可以查看一个雷的对象搜索方法时的先后顺序

    print(C.__mro__)

    运行结果为:

    1

    2

    3

    ---A---

    ---B---

    (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)

    专题推荐:python 类 继承
    上一篇:python删除对象的方法是什么 下一篇:python中重写与调用方法是什么

    相关文章推荐

    • python的魔法方法是什么• python删除对象的方法是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网