继承的基本语法

时间:2024-06-03 21:05:47

自学python如何成为大佬(目录):https://blog.****.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

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

继承是面向对象编程最重要的特性之一,它源于人们认识客观世界的过程,是自然界普遍存在的一种现象。例如,我们每一个人都从祖辈和父母那里继承了一些体貌特征,但是每个人却又不同于父母,因为每个人都存在自己的一些特性,这些特性是独有的,在父母身上并没有体现。在程序设计中实现继承,表示这个类拥有它继承的类的所有公有成员或者受保护成员。在面向对象编程中,被继承的类称为父类或基类,新的类称为子类或派生类。

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

class ClassName(baseclasslist):

    '''类的帮助信息'''                         # 类文档字符串

    statement                            # 类体

参数说明:

l   ClassName:用于指定类名。

l   baseclasslist:用于指定要继承的基类,可以有多个,类名之间用逗号“,”分隔。如果不指定,将使用所有Python对象的根类object。

l  '''类的帮助信息''':用于指定类的文档字符串,定义该字符串后,在创建类的对象时,输入类名和左侧的括号“(”后,将显示该信息。

l   statement:类体,主要由类变量(或类成员)、方法和属性等定义语句组成。如果在定义类时,没想好类的具体功能,也可以在类体中直接使用pass语句代替。

图标 (35)

  实例04  创建水果基类及其派生类

在IDLE中创建一个名称为fruit.py的文件,然后在该文件中定义一个水果类Fruit(作为基类),并在该类中定义一个类属性(用于保存水果默认的颜色)和一个harvest()方法,然后创建Apple类和Orange类,都继承自Fruit类,最后创建Apple类和Orange类的实例,并调用harvest()方法(在基类中编写),代码如下:

class Fruit:                                            # 定义水果类(基类)

    color = "绿色"                                      # 定义类属性

    def harvest(self, color):

        print("水果是:" + color + "的!")              # 输出的是形式参数color

        print("水果已经收获……")

        print("水果原来是:" + Fruit.color + "的!")    # 输出的是类属性color

class Apple(Fruit):                                      # 定义苹果类(派生类)

    color = "红色"

    def __init__(self):

        print("我是苹果")

class Orange(Fruit):                                     # 定义橘子类(派生类)

    color = "橙色"

    def __init__(self):

        print("\n我是橘子")

apple = Apple()                                          # 创建类的实例(苹果)

apple.harvest(apple.color)                               # 调用基类的harvest()方法

orange = Orange()                                        # 创建类的实例(橘子)

orange.harvest(orange.color)                            # 调用基类的harvest()方法

执行上面的代码,将显示如图18所示的运行结果。从该运行结果中可以看出,虽然在Apple类和Orange类中没有harvest()方法,但是Python允许派生类访问基类的方法。

图18  创建水果基类及其派生类的结果