什么是继承python,python是单继承还是多继承
一、继承(一)写类的时候,不一定非要以空格开头。如果要编写的类是另一个现成类的特殊版本,可以使用继承。当一个类继承另一个类时,会自动获取对方类的所有属性和方法;原始类称为父类(基类),而新类称为子类(派生类)。子类继承父类的所有属性和方法,也可以定义自己的属性和方法。
继承的意义:重用代码,方便代码的管理和修改。
# class定义class people: # defines基本属性name= age=0 #定义private属性,不能在class __weight=0之外直接访问#定义构造方法def _ _ init _ _ (self,n,a,w): self.name=nself.age=aself。_ _ weight=wdef。%(self.name,self.age)) #单继承示例类student(people):#括号内写出父类名称Grade= def _ _ init _ _ (self,n,a,w,g):#调用父类people的构造函数。_ _ init _ _ (self,n,n W) self.grade=g #重写父类def speak(self)的方法:print(%s说:我%d岁了,在读年级%d% (self。名字,自我。年龄,自我。年级))s=学生(肯,10,60,)
肯说,我今年10岁,正在学习初三(2)遗传的搜索。
(C)重用父类的__init__()创建子类的实例时,Python需要完成的第一个任务就是给父类的所有属性赋值。所以子类的方法__init__()需要父类的帮助。
类Rectangle(object):def _ _ init _ _(self,width,Length): #参数self . width=width self . Length=Length def get _ area(self):return self . width * self . Length类square (rectangle)将在参数实例化时初始化。def _ _ init _ _ (self,width,length):if width==length:rectangle。_ _ init _ _ (self,width,length) #此处调用父类方法,其中self是一个正方形的实例,Else: print(长宽不相等,所以不可能是正方形)square=square (25,25)square . get _ area()square 1=square(25,22)运行结果:
长度和宽度不相等,所以它不能是square (3)对象、_ _bases__ special属性对象的顶级类,也不能是该类的祖先。
_ _bases__特殊属性,它是父类。
打印(正方形。__bases__) #执行结果:(class __main__。Rectangle ,),因为Square的父类是Rectangle。为什么它返回一个元组?
因为元组是不可变的
二。多重遗传
一个子类可以继承多个父类。是多重继承。
层与层的继承是多重继承。
class Base(object):def play(self):print( Base正在播放!)A类(Base):# Inherit Base def play(self):#自动重写父类print (a正在播放)b类(Base):# Inherit Base def play(self):print( b正在播放)c类(A,b): # Inherit a,b passc=c()
根据c类实例isplay的方法调用,当继承多个父类时,如果父类中有相同的方法,子类将优先选择第一个继承的方法。
方法重写当子类继承父类时,如果子类不想使用父类的方法,可以通过重写来重写父类的方法。因此,您可以在子类中定义一个方法,也就是说,它与要重写的父类的方法同名。这样,Python就不会考虑这个父类方法,而只关注你在子类中定义的相应方法。
Class Parent: #定义父类def myMethod(self): print(调用父类方法)class Child(Parent): #定义子类def myMethod(self): print(调用子类方法)c=Child() #子类实例c.myMethod() #子类调用override方法。子类覆盖父类方法后,如果子类想再次调用,
#方法1类C (a,B): #继承A,B def play(self): #重写父类B.play(self) #在B类中指定play方法#方法2类C(A,b): def play (self): super()。play () print(这是C)super
极好的函数可以调用父类的方法,在父类中也使用极好的函数之后,可以通过调用类的设备维护方法属性来查看继承关系
基类(对象):def play(自身):print( Base正在播放!)A类(基本):#继承基本定义播放(自我):#自动覆盖父类的此方法超级()。播放()#调用父类方法打印( A正在播放!)a=A()a。播放()运行结果:
基地在打!a在玩!在python3中,类被创建时会自动创建方法解析顺序mro,对象是所有类的父类类mro查看继承顺序
打印(材料维护报告())运行结果:
[class __main__ .a ,class __main__ .基,类对象]
练习1:
通过多重继承方法,分别定义出动物,人类,和和荷兰人三种类
类动物(object):def _ _ init _ _(self,name):self。name=name def eat(self):print( % s正在吃东西%自我。name)def breath(self):print( % s正在呼吸% self.name)类人(动物):def __init__(自我,名字,金钱):super()._ _ init _ _(name)self。money=money def speak(self):print( % s说他有%s人民币% (self.name,self.money))类富兰(人):def eat(自己):print(弗兰人%s不仅爱吃辣,而且爱吃槟榔%自我。name)def speak(self):print(福兰人%s正在他的优势讲弗兰话。% self.name)聚豪=富兰(句号,23)聚豪。呼吸()巨豪。吃()聚豪。说话()运行结果:
句号正在呼吸弗兰人句号不仅爱吃辣,而且爱吃槟榔福兰人句号正在他的优势讲弗兰话。练习2:
通过混合模式拼接一个蜘蛛侠,可以尽量丰富这个类的属性和方法
类动物(object):def _ _ init _ _(self,name):self。name=name def eat(self):print( % s正在吃东西%自我。name)def breath(self):print( % s正在呼吸% self.name)类人(动物):def __init__(自我,名字,金钱):super()._ _ init _ _(name)self。money=money def speak(self):print( % s说他有%s人民币% (self.name,self.money))类蜘蛛(动物):def攀(自己):打印( %s正在攀岩%自我。name)def Tusi(self):print( % s正在吐丝% self.name)类蜘蛛侠(人,蜘蛛):passSpiderman=蜘蛛侠(蜘蛛侠,10)蜘蛛侠。土司()蜘蛛侠。爬()蜘蛛侠。吃()蜘蛛侠。呼吸()运行结果:
高空作业的建筑工人正在吐丝高空作业的建筑工人正在攀岩高空作业的建筑工人正在吃东西高空作业的建筑工人正在呼吸
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。