Python函数继承方法是实现代码复用的重要方式,在面向对象编程中使用广泛。Python中的继承机制允许类从另一个类继承属性和方法,从而创建一个新的类,这个新类具有原始类的所有属性和方法。在这个过程中,原始类成为父类或超类,新类成为子类。子类可以通过继承,扩展和修改父类的属性和方法。
一般来说,Python中的继承分为以下几种:
- 单继承:指的是一个子类只从一个父类继承属性和方法。
- 多继承:指的是一个子类可以从多个父类继承属性和方法。
接下来,我们将分别介绍单继承和多重继承方法的使用。
单继承
在单继承中,子类可以从一个父类继承属性和方法,通过子类可以对父类方法进行重写(覆盖)和扩充。
1. 子类继承父类方法
下面是一个简单的示例,展示了如何使用单继承:
class Parent:
def __init__(self, name, age):
self.name = name
self.age = age
def show_info(self):
print(f"Name: {self.name}\nAge: {self.age}")
class Child(Parent):
pass
c = Child("Tom", 20)
c.show_info() # 输出 Name: Tom, Age: 20
以上示例代码定义了两个类,Parent类和 Child 类,在 Child 类的定义中,我们使用关键字pass
表示不对父类的方法做任何更改。因此,执行 c.show_info()
后将输出 “Name: Tom, Age: 20″,即从父类继承的属性。
2. 子类扩展父类方法
在单继承中,子类可以对父类方法进行扩展,从而具有更多的功能。下面是一个简单的示例,展示了如何在子类中实现一个新的方法,该方法扩展自父类方法:
class Parent:
def __init__(self, name, age):
self.name = name
self.age = age
def show_info(self):
print(f"Name: {self.name}\nAge: {self.age}")
class Child(Parent):
def show_info(self):
super().show_info() # 调用父类同名方法
print(f"Student ID: {self.student_id}")
c = Child("Tom", 20)
c.student_id = 1001
c.show_info()
以上示例代码和上一个代码示例中的 Child 类基本相同,区别在于在子类中对show_info()
方法进行了扩展,在子类的 show_info()
方法中通过 super().show_info()
调用父类同名方法并输出父类的内容,接下来输出扩展内容 "Student ID: 1001"
。
多继承
Python中的多继承是指一个类可以同时继承多个父类,因此可以从多个类中获得属性和方法。在实践中,多重继承通常用于创建最终一个实体类。Python中使用逗号分隔多个父类,在定义子类时使用它们进行继承。
1. 子类继承多个父类
下面是一个简单的示例,展示了如何使用多继承:
class Father:
def play_guitar(self):
print("Father plays guitar.")
class Mother:
def drive(self):
print("Mother drives a car.")
class Child(Father, Mother):
pass
c = Child()
c.play_guitar()
c.drive()
以上示例代码定义了三个类,Father、Mother 和 Child。Father 和 Mother 分别代表父母, Child 类从两者继承。在子类中,我们可以使用从两个类继承的属性和方法,并且不需要在子类中进行任何更改。执行c.play_guitar()
输出 “Father plays guitar.”,执行c.drive()
输出 “Mother drives a car.”。
2. 多个父类方法重名
在多继承中,如果多个父类中有方法重名,那么在子类中调用重名方法时,将选择继承顺序靠前的父类的方法。如下示例代码:
class PersonA:
def play(self):
print("PersonA: I like playing football.")
class PersonB:
def play(self):
print("PersonB: I like playing basketball.")
class Child(PersonA, PersonB):
pass
c = Child()
c.play() # 输出 "PersonA: I like playing football."
以上示例代码定义了三个类,PersonA、PersonB 和 Child。在 Child 类中,从 PersonA 和 PersonB 类中同时继承了play()
方法。但是由于 PersonA 在 Child 中排在前面,因此该方法将调用父类 PersonA 的方法并输出 “PersonA: I like playing football.”。
在多继承中,如果子类需要调用父类的特定方法,可以使用 super() 函数来实现。super() 函数使用方法如下:super().method()
。
综上所述,以上就是Python函数继承方法的完整攻略,其中我们讲解了如何使用单继承和多继承,以及如何在子类中继承、扩展和修改父类的属性和方法。