1. 类与继承
在Python中,面向对象编程(Object-Oriented Programming,OOP)是一种非常常见的编程范式。类是OOP的核心概念之一,它是一种自定义的数据类型,可以封装数据和方法。通过类的继承,可以实现代码复用,提高代码的可维护性和可扩展性。
1.1 定义类
在Python中,定义类使用class
关键字,后跟类名,类名通常遵循大写驼峰命名法。类中可以定义属性(数据)和方法(函数),属性用于存储数据,方法用于封装操作。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is", self.name)
以上代码定义了一个Person
类,该类有一个构造方法__init__
和一个方法say_hello
。构造方法在实例化对象时调用,用于初始化对象的属性;而say_hello
方法用于打印个人信息。
1.2 类的实例化
通过类可以创建对象,这个过程称为实例化。通过实例化,可以调用类中定义的方法和访问属性。
person = Person("Alice", 25)
person.say_hello() # 输出"Hello, my name is Alice"
以上代码实例化了一个Person
对象,并调用了say_hello
方法。
2. 类的继承
继承是OOP中非常重要的概念,它允许子类继承父类的属性和方法。子类可以在继承基础上扩展新的属性和方法。
2.1 单继承
Python支持单继承,即一个子类只能继承一个父类的属性和方法。通过继承,子类可以重用父类的代码,并添加自己的新代码。
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id
def show_student_id(self):
print("My student ID is", self.student_id)
以上代码定义了一个Student
类,它继承自Person
类。在Student
类中,我们添加了一个新属性student_id
和一个新方法show_student_id
。
使用继承后,Student
对象可以使用Person
类的方法,同时还可以调用自己添加的方法。
student = Student("Bob", 21, "12345")
student.say_hello() # 输出"Hello, my name is Bob"
student.show_student_id() # 输出"My student ID is 12345"
以上代码创建了一个Student
对象,并调用了say_hello
方法和show_student_id
方法。
2.2 多继承
除了单继承,Python还支持多继承,即一个子类可以继承多个父类的属性和方法。多继承使用逗号分隔多个父类。
class Worker:
def __init__(self, name, age, company):
self.name = name
self.age = age
self.company = company
def work(self):
print("I'm working at", self.company)
class PartTimeStudent(Student, Worker):
def __init__(self, name, age, student_id, company):
Student.__init__(self, name, age, student_id)
Worker.__init__(self, name, age, company)
以上代码定义了一个PartTimeStudent
类,它同时继承了Student
类和Worker
类。在PartTimeStudent
类的构造方法中,我们调用了父类的构造方法来初始化属性。
通过多继承,PartTimeStudent
对象可以调用Student
类和Worker
类中的方法。
part_time_student = PartTimeStudent("Tom", 20, "54321", "ABC Company")
part_time_student.say_hello() # 输出"Hello, my name is Tom"
part_time_student.show_student_id() # 输出"My student ID is 54321"
part_time_student.work() # 输出"I'm working at ABC Company"
以上代码创建了一个PartTimeStudent
对象,并调用了say_hello
方法、show_student_id
方法和work
方法。
3. 总结
本文介绍了Python面向对象编程中的类和继承。类是自定义的数据类型,它可以封装数据和方法;继承是一种代码复用的机制,子类可以继承父类的属性和方法,并添加自己的新代码。
通过单继承,子类可以继承一个父类的属性和方法;通过多继承,子类可以继承多个父类的属性和方法。