趣谈Python类继承

趣谈Python类继承_第1张图片

这是菜鸟学python的第40篇原创文章

阅读本文大概需要7分钟

今天我们来了简单说一下Python类的继承,我们会通过一个汽车类的例子一步一步分解开来,带领大家来学习Python类的继承,我把这个复杂的概念分解成4步来说.

流程:

->新建一个汽车类

->给汽车类添加属性和方法

->增加一个电动汽车子类,继承汽车类

->给电动车添加属性和方法,然后重载父类方法

知识要点:

1)子类的继承

2)子类的初始化

3)子类的重载

第一步:我们先创建一个car的类

1)这个类需要存储一些汽车的信息列如:厂家,型号,年代等等

2)需要有一个简单的方法来获得这些信息

3)需要有一个方法说明这个是汽车是用汽油

趣谈Python类继承_第2张图片

>>

2016 Audi A4

This car need a gas tank!

是不是有点简单,我们再给汽车添加点东西

增加一个里程数信息

增加读里程数的方法

更新里程数的方法


趣谈Python类继承_第3张图片

my_new_car = Car('audi', 'a4', 2016)

print my_new_car.get_descriptive_name()

my_new_car.update_odometer(100)

my_new_car.read_odometer()

>>

2016 Audi A4

This car has 100 miles on it

第二步:增加一个电动汽车子类

我们增加一个电动汽车的类ElectricCar,因为电动汽车也是汽车的一种,所以我们会继承car类,注意子类初始化有两种方法

1)先看第一种:若父类Car是经典类,子类的初始化的时候,用传统的调用直接用父类调用__init__()

趣谈Python类继承_第4张图片

2)再看第二种:若父类Car是新式类(就是父类继承object类),子类的初始化的时候

除了直接用父类调用__init__(),还可以用super这个关键字

super()会带两个参数,第一个是子类的类名,第二个是self参数.

趣谈Python类继承_第5张图片

有同学说为啥要用super(),因为super可以避免一些类继承的潜在问题,特别是在多重继承上,关于super我们这边先不展开讲.大家切记,千万不要把super和传统的调用混在一起用.

第三步:添加子类特有属性

那么我们子类是不是应该有自己的特有属性和方法的,好我们加点东西

添加电池容量的变量

获取电池容量的方法

趣谈Python类继承_第6张图片

第四步:类方法的重载

如果我们子类有一个名字和父类一样的方法,Python会自动判断对象的类型去调用对应的方法.比如我们子类里面也有一个叫fill_gas_tank的方法,会怎么样呢:


趣谈Python类继承_第7张图片

子类会调用自己的fill_gas_tank方法

最后说一下,原创真的不易,希望大家能够给点支持,

也欢迎更多喜欢Python的同学关注 微信公众号:菜鸟学python,一起来学python吧

阅读原文

你可能感兴趣的:(趣谈Python类继承)