Python面向对象编程(三)

  • Post category:Python

Python面向对象编程(三)

在Python面向对象编程过程中,类的继承是非常常见的一种方式,通过继承,可以在已有的类的基础上创建新的类,这样可以避免代码的重复,提高代码的可复用性。

语法

Python中的继承使用关键字class后面的父类名称,若继承多个父类,使用逗号分隔。

class 子类名(父类名):
    # 子类的属性和方法

通过继承,子类将继承父类中的属性和方法,同时还可以覆盖父类的属性和方法,或者增加新的属性和方法。在子类中访问父类的属性和方法可以使用super()函数。

示例

以下是一个示例,Son继承了Father父类:

# 父类
class Father:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print("大家好,我是%s,我是家里的爸爸。" % self.name)

# 子类
class Son(Father):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age

    def introduce(self):
        super().introduce()
        print("我今年%d岁了,正在读小学。" % self.age)

s = Son("小明", 7)
s.introduce()

在上面这个示例中,Son继承了Father父类,并且覆盖了introduce()方法。在子类中我们用super()函数来调用父类中的introduce()方法,这里特别注意,如果不加super()函数,那么在调用introduce()方法时将会陷入死循环。

输出如下:

大家好,我是小明,我是家里的爸爸。
我今年7岁了,正在读小学。

示例2

以下是另一个示例,Car继承了VehicleEngine两个父类:

# 父类1
class Vehicle:
    def move(self):
        print("车辆在移动...")

# 父类2
class Engine:
    def start(self):
        print("引擎已启动...")

# 子类
class Car(Vehicle, Engine):
    pass

c = Car()
c.start()
c.move()

在上面这个示例中,Car继承了VehicleEngine两个父类,子类中没有定义任何属性和方法。我们创建了一个Car实例,然后调用了start()move()方法,由于Car类继承了VehicleEngine,所以它也具有了这些方法的功能,输出如下:

引擎已启动...
车辆在移动...

至此,简单介绍了Python面向对象编程中的继承相关知识,通过继承可以避免重复代码,提高代码复用性,同时还可以实现多态等高级特性。