Python中类的继承是什么[python高级]

一、继承的概念

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

qqq.jpg

二、继承的示例

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()

运行结果为:

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

波斯猫:在吃

汤姆猫:在跑

相关推荐:《Python相关教程》

说明:

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

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

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

注意:

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

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

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

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

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()

运行结果为:

白色

动物

白色

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

黄色

阿黄

黄色

三、多继承

www.jpg

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

Python中多继承的格式如下:

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()

运行结果为:

---A---

---B---

说明

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

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

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

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__)

运行结果为:

---A---

---B---

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

以上是 Python中类的继承是什么[python高级] 的全部内容, 来源链接: utcz.com/z/540071.html

回到顶部