Python中类的继承

假设我们有一个动物类Animal,里面有两个属性name、age,和两个方法sleep()和eat()。

animal.py

 1 class Animal():
 2     
 3     def __init__(self,name,age):
 4         self.name = name
 5         self.age = age
 6         
 7     def eat(self):
 8         print("Animal " + self.name + " is eating foods")
 9         
10     def sleep(self):
11         print("Animal " + self.name + " is sleeping")

假设我们还有一个Dog类,它也包含这两个属性和这两个方法,还有自己特有的属性(color)和方法(dark)。

dog.py

 1 from animal import Animal 
 2 
 3 class Dog(Animal):
 4     def __init__(self,name,age,color):
 5         super().__init__(name,age)
 6         self.color = color
 7         
 8     def bark(self):
 9         print("Dog " + self.name + " is barking ,it is " + self.color)
10         
11     
12 my_dog = Dog('kimi',18,'red')
13 my_dog.bark()
14 my_dog.eat()
15 my_dog.sleep()

 

在我们编写dog类的时候,就不需要在重新写那两个已在Animal类中的方法,我们直接继承过来就可以使用了,第一行代码导入Animal 类用于Dog类的继承,导入类语法:from 模块名 import 类名。

第三行,我们将Animal 类传入Dog()中,表示Dog继承Animal,而第五行的super() 表示调用父类的__init__() 方法进行初始化,Dog中还有自己特定的属性color (颜色),因为Animal 中没有color这个属性,所以我们需要单独使用 self.color=color 语句赋值,Dog类还有自己特定的方法,bark() 狗吠的方法,所以第13、14、15行代码,既可以调用自己类中特定的方法还可以调用父类Animal中所有的方法。

 

我们也可以在给类初始化时,赋予默认值,这样就不用传递每个参数,将Dog类中的__init__() 重新编写:

def __init__(self,name,age,color=‘blue’):
        super().__init__(name,age)
        self.color = color

此时如果我们不传入color 则,color默认为blue。

重写父类方法

我们可以重写父类中的方法,只需要和父类中方法名和形参数量相同即可。

 

  我的问题在于,读书不多,而想的太多

 

posted @ 2019-06-13 22:12  桃子dev  阅读(13121)  评论(0编辑  收藏  举报