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
继承了Vehicle
和Engine
两个父类:
# 父类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
继承了Vehicle
和Engine
两个父类,子类中没有定义任何属性和方法。我们创建了一个Car
实例,然后调用了start()
和move()
方法,由于Car
类继承了Vehicle
和Engine
,所以它也具有了这些方法的功能,输出如下:
引擎已启动...
车辆在移动...
至此,简单介绍了Python面向对象编程中的继承相关知识,通过继承可以避免重复代码,提高代码复用性,同时还可以实现多态等高级特性。