从0开始学python第8.2节-继承和重写

上节课我们学习了什么是面向对象。在面向对象里有类和实例两个概念。类是模板,实例是按照这些模板生成的一个个具体对象。

什么是继承

这节课我们来学习继承和重写,咱们还是看生活中的例子。我们知道,世间的各种生物都是有细胞演化过来的。咱们来推演一下这个过程(参考资料,为了简化编程模型,相关生物概念做了一些模糊:


https://zh.wikipedia.org/wiki/生命演化历程

https://www.coursera.org/lecture/shengwu-yanhua/12-2-sheng-ming-qi-yuan-de-jie-duan-shang-1E923)


在大约40亿年前,地球产生了细胞,从此产生了生命。细胞具有大小、年龄属性;细胞的移动方式游动。

在大约10亿年前,细胞演化出了两种形态,植物和动物,我们来分别看看一下这两种生物。

植物因为是从细胞演化(继承)过来的,所以也拥有大小和年龄的属性。植物的移动方式我们人类比较难观察到,植物通过根从土壤里吸收养分输送到叶子。这个过程我们简化成叫吸收养分吧。

动物也是从细胞演化(继承)过来的,所以也拥有大小和年龄的属性。动物的移动方式有很多种,我们就简化成走吧。

在上面的例子里,细胞是一个类,植物也是一个类。细胞和植物之间就是继承关系。植物继承自细胞;同理,动物也是继承自细胞。

下面,我们用python代码来演示一下继承。

python中的类继承


首先,我们定义一个细胞类:

class Cell:    def __init__(self):        self.size = 0        self.age = 1    def move(self):        return '游动'

那我们怎么来表达植物继承自细胞呢?看代码:


class Plant(Cell):    pass plant = Plant() print(plant.size) print(plant.move())

我们在类的定义中,传入我们要继承的类就可以了。一个类还可以继承多个类,每个类之间用空格分开。

因为Plant 继承了 Cell ,所以plant就自动拥有了 size、age属性和move方法。

咱们再来写一下动物的代码:


class Animal(Cell):    pass animal = Animal() animal.size = 1 print(animal.size) print(animal.move())

方法重写

我们知道,每个实例有自己的属性,我们单独更改某个属性的值。那我们怎么更改实例的方法呢?

上面说了,植物的移动方式是吸收养分、动物的移动方式是。咱们怎么让植物和动物拥有自己的move方法呢?我们只需要重新在PlantAnimal类里定义一下这个方法就好了。看代码:

class Plant(Cell):    def move(self):        return '吸收养分' class Animal(Cell):    def move(self):        return '走' plant = Plant() print(plant.move()) animal = Animal() print(animal.move())

怎么样?是不是很简单。面向对象是很核心的编程概念,下节课,我们通过一些案例来看在具体的项目中怎么使用面向对象。

阿达老师-孩子身边的编程专家


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 春山空自远,青鸟寄梅笺 雨后杨柳翠,歌罢鹿车闲 酒肆逢佳客,绿蚁醉管弦 共邀秦时月,携手度阳关
    衡水文化王新良阅读 1,760评论 2 12
  • 今日金句:不乱于心、不困于情。不畏将来,不念过往!——丰子恺 这两天,鼻咽的加重,一天中30%的时间都不自觉的找寻...
    橙色温度阅读 2,750评论 0 1
  • 昨天晚上,一个朋友请吃饭。因为朋友捡到一张X店200元的餐饮券,于是佛性大发,请哥几个去吃点硬菜。结果点完了才发现...
    韩同志阅读 1,882评论 1 1

友情链接更多精彩内容