zoukankan      html  css  js  c++  java
  • 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。

    重写父类方法

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

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

  • 相关阅读:
    Hexo 与 Git 集成
    Hexo Next 调优
    【翻译】Django Channels 官方文档 -- Tutorial
    配置环境是程序员的第一步 -- Xshell 6 免费版下载安装
    一步一步理解 python web 框架,才不会从入门到放弃 -- 简单登录页面
    配置环境是程序员的第一步 -- Windows 10 下 MySQL 安装
    一步一步理解 python web 框架,才不会从入门到放弃 -- 开始使用 Django
    一步一步理解 python web 框架,才不会从入门到放弃 -- 启程出发
    生成器
    迭代器
  • 原文地址:https://www.cnblogs.com/tizer/p/11019932.html
Copyright © 2011-2022 走看看