Python 面向对象编程的三大特性之继承
继承作为面向对象编程中的三大特性之一,在 Python 数据分析、Web开发等领域的应用广泛。继承顾名思义是指在现有类基础上创建新的类,新类可以复用原类的属性和方法,在此基础上添加新的特性。充分使用Python的继承,有利于提高代码重用性,减少后期维护的工作量。
继承的语法
在 Python 中,声明新类,可以通过继承现有的类来创建。语法如下:
class NewClass(ParentClass):
def __init__(self, [parameter_list]):
pass
其中,NewClass 是新创建的类名,ParentClass 是现有类或基类,括号内为可选的构造方法参数列表。
继承的核心概念
在继承中,有以下两个核心概念:
-
子类(NewClass)继承父类(ParentClass)的所有属性和方法,包括私有属性和私有方法,但无法直接访问基类的私有属性和私有方法。
-
子类可以覆盖父类的属性和方法,以实现新的特性,这种行为被称为重写。如果子类在重写时需要调用父类的某些方法或属性,可以使用
super()
函数。
继承的实例
下面通过建立一个 Person
父类和一个 Student
子类来加深对继承的理解。Person 父类包含一个 name
和一个 age
属性和一个 info
方法, Student 子类继承 Person 父类的所有属性和方法,并新增加了一个 grade
属性和一个 show
方法,用来显示学生的基本信息和年级。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
print(f"Name: {self.name}")
print(f"Age: {self.age}")
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade
def info(self):
super().info()
print(f"Grade: {self.grade}")
def show(self):
print(f"Name: {self.name}")
print(f"Age: {self.age}")
print(f"Grade: {self.grade}")
在上述代码中,子类 Student
继承了所有的属性和方法,并新增了 grade
属性和 show
方法。其中,__init__()
方法使用了 super()
函数,因为需要调用父类的 __init__()
方法来初始化 name
和 age
属性,以确保父类中的构造方法得到正确的执行。info()
方法被重写,使用了父类中的 info()
方法,然后在输出前附加了学生的年级信息。
下面演示下如何使用创建的类:
p1 = Person("Tom", 18)
p1.info()
s1 = Student("Jerry", 17, "Grade 7")
s1.info()
s1.show()
输出结果如下:
Name: Tom
Age: 18
Name: Jerry
Age: 17
Grade: Grade 7
Name: Jerry
Age: 17
Grade: Grade 7
从上述代码可以看出,子类 Student
继承了父类 Person
的所有属性和方法,同时新增加了 grade
属性和 show
方法。在创建 Student
实例时,使用了父类中的初始化方法,并且可以使用子类中新增的 show
方法。
继承是面向对象编程重要的特性之一,在Python中可以很方便地创建子类,实现对象的复用和特性的增强。若继承不当会造成代码混乱和不必要的维护问题,因此在熟悉继承的基础上,应特别注意继承时的细节和注意事项,从而更好地使用Python中的继承。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 面向对象编程的三大特性之继承 - Python技术站