python中继承的代码怎么写?(你了解python中的继承吗)
继承机制经常用于创建和现有类功能类似的新类 ,又或是新类只需要在现有类基础上添加一些成员(属性和方法) ,但又不想直接将现有
类代码复制给新类 。也就是说,通过使用继承这种机制 ,可以轻松实现类的重复使用 。
举个例子 ,假设现有一个 Shape 类 ,该类的 draw() 方法可以在屏幕上画出指定的形状 ,现在需要创建一个 Form 类 ,要求此类不但可以
在屏幕上画出指定的形状 ,还可以计算出所画形状的面积 。要创建这样的类 ,笨方法是将 draw() 方法直接复制到新类中 ,并添加计算面
积的方法 。实现代码如下所示:
classShape: defdraw(self,content): print("画",content) classForm: defdraw(self,content): print("画",content) defarea(self): #.... print("此图形的面积为...")当然还有更简单的方法 ,就是使用类的继承机制 。实现方法为:让 From 类继承 Shape 类,这样当 From 类对象调用 draw() 方法时 ,
Python 解释器会先去 From 中找以 draw 为名的方法 ,如果找不到,它还会自动去 Shape 类中找 。如此 ,我们只需在 From 类中添加
计算面积的方法即可 ,示例代码如下:
classShape: defdraw(self,content): print("画",content) classForm(Shape): defarea(self): #.... print("此图形的面积为...")上面代码中,class From(Shape) 就表示 From 继承 Shape 。
Python 中 ,实现继承的类称为子类 ,被继承的类称为父类(也可称为基类 、超类) 。因此在上面这个样例中 ,From 是子类 ,Shape 是父类 。
子类继承父类时 ,只需在定义子类时 ,将父类(可以是多个)放在子类之后的圆括号里即可。语法格式如下:
class类名(父类1,父类2,...): #类定义部分注意 ,有读者可能还听说过“派生 ”这个词汇 ,它和继承是一个意思 ,只是观察角度不同而已 。换句话话,继承是相对子类来说的 ,即子
类继承自父类;而派生是相对于父类来说的 ,即父类派生出子类 。
了解了继承机制的含义和语法之后,下面代码演示了继承机制的用法:
classPeople: defsay(self): print("我是一个人 ,名字是:",self.name) classAnimal: defdisplay(self): print("人也是高级动物") #同时继承People和Animal类 #其同时拥有name属性 、say()和display()方法 classPerson(People,Animal): pass zhangsan=Person() zhangsan.name="张三" zhangsan.say() zhangsan.display()关于Python的多继承
事实上 ,大部分面向对象的编程语言,都只支持单继承 ,即子类有且只能有一个父类。而 Python 却支持多继承(C++也支持多继承) 。
和单继承相比 ,多继承容易让代码逻辑复杂、思路混乱 ,一直备受争议 ,中小型项目中较少使用 ,后来的 Java 、C# 、PHP 等干脆取消了多继承 。
使用多继承经常需要面临的问题是 ,多个父类中包含同名的类方法。对于这种情况 ,Python 的处置措施是:根据子类继承多个父类时这些父类的前后次序决定 ,即排在前面父类中的类方法会覆盖排在后面父类中的同名类方法 。
classPeople: def__init__(self): self.name=People defsay(self): print("People类",self.name) classAnimal: def__init__(self): self.name=Animal defsay(self): print("Animal类",self.name) #People中的name属性和say()会遮蔽Animal类中的 classPerson(People,Animal): pass zhangsan=Person() zhangsan.name="张三" zhangsan.say()创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!