位置: IT常识 - 正文
推荐整理分享Python中类的继承是什么(python类的继承与多态),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:python中类的继承通过什么表达,python中类的继承只支持单继承不支持多继承,if语句python,python中class,python中类的继承只支持单继承不支持多继承,python中类的继承只支持单继承不支持多继承,python中类的继承只支持单继承不支持多继承,python中类的继承有什么好处,内容如对您有帮助,希望把文章链接给更多的朋友!
一、继承的概念
在现实生活中,继承一般指的是子女继承父辈的财产,在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物;同理,波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承足够,如下如所示:
二、继承的示例
classCat(object):def__init__(self,name,color="白色"):self.name=nameself.color=colordefrun(self):print("%s:在跑"%self.name)classBosi(Cat):defsetNewName(self,newName):self.name=newNamedefeat(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=nameself.color=colordef__test1(self):print(self.__name)print(self.color)deftest2(self):print(self.__name)print(self.color)classDog(Animal):defdogTest1(self):#不能访问父类的私有属性:AttributeError:'Animal'objecthasnoattribute'__name'#print(self.__name)print(self.color)defdogTest2(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,BclassC(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,BclassC(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'>)上一篇:为WordPress文章添加阅读进度条 Worth The Read(wordpress编辑文章)
下一篇:Windows批处理实现邮件远程控制电脑(第三方批处理)(window批处理文件)
友情链接: 武汉网站建设