Python中类的继承是什么
发布时间:2025-11-09 16:41:28

一、继承的概念
在现实生活中,继承一般是指孩子继承父母的财产。在这个过程中,继承描述了事物之间的关系。例如,猫和狗属于动物,这个过程可以描述为猫和狗继承自动物;同样,波斯猫和巴厘岛猫继承猫,沙皮狗和斑点狗继承足够,如下所示:

二、继承的例子
classCat(object):
def__init__(self,name,color="白色"):
self.name=name
self.color=color
defrun(self):
print("%s:在跑"%self.name)
classBosi(Cat):
defsetNewName(self,newName):
self.name=newName
defeat(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.一般情况下,私有属性和方法不对外公布,常用于做内部事情,起到安全作用。
classAnimal(object):
def__init__(self,name="动物",color="白色"):
self.__name=name
self.color=color
def__test1(self):
print(self.__name)
print(self.color)
deftest2(self):
print(self.__name)
print(self.color)
classDog(Animal):
Test1defdog(self):
#父类私有属性不能访问:AttributeError:'Animal'objecthasnoattribute'__name'
#print(self.__name)
print(self.color)
defdogtesttttetttt2(self):
#self.__test1()
self.test2()
A=Animal()
#print(A.__name)
print(A.color)
#不能访问父亲的私人方法:AttributeError:'Animal'objecthasnoattribute'__test1'
#A.__test1()
A.test2()
print("-----------------分割线-----------------")
D=Dog(name="阿黄",color="黄色")
D.dogtest1()
D.dogTest2()运行结果如下:
白色 动物 白色 -----------------分割线----------------- 黄色 阿黄 黄色
三、多继承

从图中可以看出,所谓多继承,就是子类有多个父类,有它们的特点。
Python中多继承的格式如下:
classA:
defprintA(self):
print("---A---")
classB:
defprintB(self):
print("---B---")
#定义子类继承A,B
classC(A,B):
defprintC(self):
print("---C---")
obj_C=C()
obj_C.printA()
obj_C.printB()运行结果如下:
---A--- ---B---
说明
1.python可以多继承。
2.父类中的方法、属性,子类将继承。
3.如果多个父类中有相同的方法,谁写在前面就调用谁的方法。
classA:
defprintA(self):
print("---A---")
classB:
defprintB(self):
print("---B---")
#定义子类继承A,B
classC(A,B):
defprintC(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'>)
下一篇 返回列表
