知行编程网知行编程网  2022-10-31 21:30 知行编程网 隐藏边栏  3 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python中类的继承是什么的相关知识,希望可以帮到处于编程学习途中的小伙伴


Python中类的继承是什么


一、继承的概念

在现实生活中,继承一般是指孩子继承父母的财产。在程序中,继承描述了事物之间的关系。例如,猫和狗属于动物。在程序中,可以说猫狗继承自Animals;同样,波斯人和巴厘岛人都继承了猫,而沙皮犬和斑点狗都继承了足够的遗传,如下图所示:

Python中类的继承是什么


二、继承的示例

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的名字是:波斯猫,颜色是:白色
波斯猫:在吃
汤姆猫:在跑


说明:

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

运行结果为:

白色
动物
白色
-----------------分割线-----------------
黄色
阿黄
黄色


三、多继承


Python中类的继承是什么

从图中可以看出,所谓多重继承,即子类有多个父类,各有特点。

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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享