1、假设定义一个鸟类 BirdBase,包含两个属性name、age;两个方法eat(),fly()
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : bird_base.py # @Author: ttwang # @Date : 2021/10/18 # @Desc : 鸟类BirdBase class BirdBase(object): """ 假设定义一个鸟类BirdBase 其中两个属性name,age 两个方法eat(),fly() #ps: python3中,类定义默认继承object,可以不写,但是建议写上 """ def __init__(self,name,age): self.name = name self.age = age def eat(self): print("Bird" + self.name + "is eating foods") def fly(self): print("Bird" + self.name + "is flying")
2、假设此时我们还有个类Swallow,该类中也包含上面BirdBase类的两个方法和两个属性,然后还有自己的属性color和方法swallow_chirp(),
我们可以选择不用重写这两个方法,直接从BirdBase类中继承过来,直接使用:
1)首先将BirdBase类导入,然后Swallow类继承它:from 模块名 import 类名
2)对于BirdBase类中没有的属性和方法,我们需要单独定义
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : swallow.py # @Author: ttwang # @Date : 2021/10/18 # @Desc : Swallow类 from python_learning.bird_base import BirdBase class Swallow(BirdBase): # Swallow继承BirdBase def __init__(self,name,age,color): """ super()函数表示调用父类BirdBase的__init__()方法进行初始化; 但Swallow类中有自己特定的属性color,而父类中无改属性,故单独赋值: self.color = color """ super(Swallow, self).__init__(name,age) self.color = color def swallow_chirp(self): """ Swallow类同样可以有自己特定的方法 """ print("Swallow" + self.name + "is chirping, it is" + self.color) my_swallow = Swallow('humy',18,'black') my_swallow.swallow_chirp() my_swallow.eat() my_swallow.fly()
输出:
# 从输出结果,可以看出Swallow类即可以调用自己类中特定的方法,也可以调用父类BirdBase中的方法 Swallow humy is chirping, it is black Bird humy is eating foods Bird humy is flying