Python类的继承

Python类的继承

一、前言

在编写类时,并不是每次都要从空白开始。当要编程的类和另外一个已经存在的类直接存在一定的继承关系时,就可以通过继承来达到代码重用的目的,提高开发效率。下面将介绍如何在Python中实现继承。

二、继承的基本语法

继承是面向对象编程最重要的特性之一。它源于人们对客观世界的认识过程,是自然界的普遍现象。例如,我们每个人都从祖父母那里继承了一些身体特征,但我们每个人都不同于我们的父母,因为我们每个人都有自己的特点,这些特点是独一无二的,没有反映在我们的父母身上。在编程中实现继承,指示此类具有其继承的类的所有公共成员或受保护的成员。在面向对象编程中,继承的类称为父类或基类,新类称为子类或派生类。

[En]

Inheritance is one of the most important features of object-oriented programming. it originates from the process of people’s understanding of the objective world and is a common phenomenon in nature. For example, each of us inherits some physical traits from our grandparents, but each of us is different from our parents, because each of us has our own characteristics, which are unique and not reflected in our parents. Implement inheritance in programming, indicating that this class has all public or protected members of the class it inherits. In object-oriented programming, the inherited class is called the parent class or the base class, and the new class is called the subclass or derived class.

通过继承不仅可以实现代码的重用,还可以通过继承来理顺类与类之间的关系。在Python中,可以在类定义语句中,类名右侧使用一对小括号将要继承的基类名称括起来,从而实现类的继承。具体语法如下:

class ClassName(baseclasslist):
    """类的帮助信息"""
    statement

参数说明:

  • ClassName:用于指定类名
  • baseclasslist:用于指定要继承的基类,可以有多个,类名之间用逗号”,”隔开。如不指定,将使用所有Python对象的根类object
  • “””类的帮助信息”””:用于指定类的文档字符串,定义该字符串后,在创建类的对象时,输入类名和左侧的括号”(“后,将显示信息
  • statement:类体,主要由类变量(或类成员)、方法、属性等定义语句组成。如果定义类时,没有想好类的具体功能时,可以在类体中直接使用Pass语句代替。

三、方法重写

基类的成员都会被派生类继承,当基类中的某个方法不完全适用于派生类时,就需要在派生类中重写父类的这个方法,这和Java语言中直接使用pass语句代替。

例如,定义一个Fruit水果类,该类中定义一个harvest()方法,无论派生类是什么水果都将显示”水果…”,如果想要针对不同的水果给出不同的提示,可以在派生类中重写harvest()方法。例如,在创建派生类Orange时,重写harvest()方法,代码如下:

class Fruit:
    color = "绿色"

    def harvest(self, color):
        print("水果是:" + color + "的")
        print("水果已经收获......")
        print("水果原来是:" + Fruit.color + "的")

class Orange(Fruit):
    color = "橙色"

    def __init__(self):
        print("\n我是橘子")

    def harvest(self, color):
        print("橘子是:" + color + "的")
        print("橘子已经收获......")
        print("橘子原来是:" + Fruit.color + "的")

四、派生类中调用基类的__init__()方法

在派生类中定义__init__()方法时,不会自动调用基类的__init__()方法。例如,定义一个Fruit类,在__init__()方法中创建类属性color,然后在Fruit类的Apple类,最后创建Apple类的实例,并调用harvest()方法,代码如下:

class Fruit:
    def __init__(self, color="绿色"):
        Fruit.color = color

    def harvest(self):
        print("水果原来是:" + Fruit.color + "的")

class Apple(Fruit):
    def __init__(self):
        print("我是苹果")

apple = Apple()
apple.harvest()

执行上面代码后,将显示如图所示的异常信息:

Python类的继承
因此在派生类中使用基类的__init__()方法,必须要进行初始化,即需要在派生类中使用super()函数调用基类的__init__()方法。例如,将上面代码进行修改,代码如下:
class Fruit:
    def __init__(self, color="绿色"):
        Fruit.color = color

    def harvest(self):
        print("水果原来是:" + Fruit.color + "的")

class Apple(Fruit):
    def __init__(self):
        print("我是苹果")
        super().__init__()

apple = Apple()
apple.harvest()

执行上面代码,将显示以下内容:

Python类的继承

Original: https://blog.csdn.net/weixin_45191386/article/details/124564606
Author: ζ小菜鸡
Title: Python类的继承

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/222763/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总