面向对象编程 Python 中的类
介绍
面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程范式,它将相关的数据和操作封装在一起,形成一个对象。Python 是一种支持面向对象编程的高级编程语言,它通过类(class)来实现面向对象编程。
在 Python 中,类是创建对象的模板,它定义了对象的属性和相关的方法。对象是类的实例,可以通过实例化类来创建对象。面向对象编程的核心思想是将问题划分为一系列相互关联的对象,通过对象之间的交互来解决问题。
类的定义和实例化
在 Python 中,可以使用 class
关键字来定义一个类。类名通常采用首字母大写的驼峰命名法。类的定义包含在一个代码块中,可以定义类的属性和方法。
下面是一个简单的示例,定义了一个 Person
类,它包含 name
和 age
两个属性,并且有一个 say_hello
方法用于打印问候语。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"Hello, my name is {self.name}. I'm {self.age} years old.")
在上面的示例中,__init__
方法是一个特殊的方法,用于初始化对象的属性。self
是一个指向当前对象的引用,通过它可以访问对象的属性和方法。
要创建一个对象,可以使用类名后加上一对括号的方式进行实例化。实例化后,可以访问对象的属性和方法。
person = Person("Alice", 25)
print(person.name) # 输出 "Alice"
print(person.age) # 输出 25
person.say_hello() # 输出 "Hello, my name is Alice. I'm 25 years old."
继承和多态
继承是面向对象编程的一个重要概念,它允许创建一个新的类,从现有的类中继承属性和方法。被继承的类称为父类或基类,继承的类称为子类或派生类。
子类可以重写父类的方法,以实现自己特定的行为。这种行为称为多态,它允许在运行时根据实际的对象类型调用正确的方法。
下面是一个示例,定义了一个 Student
类,它继承自 Person
类,并重写了 say_hello
方法。
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade
def say_hello(self):
print(f"Hello, my name is {self.name}. I'm a student in grade {self.grade}.")
在上面的示例中,super()
函数调用父类的 __init__
方法来初始化继承的属性。
要创建一个子类的对象,可以使用子类的类名后加上一对括号的方式进行实例化。子类的对象可以调用继承自父类的属性和方法,并且可以调用自己重写的方法。
student = Student("Bob", 15, 9)
print(student.name) # 输出 "Bob"
print(student.grade) # 输出 9
student.say_hello() # 输出 "Hello, my name is Bob. I'm a student in grade 9."
封装和访问控制
封装是面向对象编程的另一个重要概念,它通过将数据和操作封装在对象内部,实现了数据的隐藏和访问的控制。
在 Python 中,可以通过在属性名前加上两个下划线的方式实现私有属性。私有属性只能在对象内部访问,外部无法直接访问。
下面是一个示例,定义了一个 Car
类,它包含私有属性 __mileage
和公有方法 get_mileage
和 add_mileage
。
class Car:
def __init__(self, mileage):
self.__mileage = mileage