六、面向对象编程(OOP)
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,将数据和操作封装为对象,通过对象之间的交互来构建程序。它强调将问题划分为多个独立的实体(对象),每个对象都有自己的数据和行为。
1. 类和对象
- 类(Class):类是面向对象编程中的核心概念,它是对象的蓝图或模板。类定义了对象的属性(数据)和方法(行为)。
- 对象(Object):对象是类的实例化,它是类的具体实体,具有类定义的属性和方法。
以下是一个简单的类和对象的示例:
# 定义一个类
class Person:
# 类属性
species = "Human"
# 构造方法
def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age
# 实例方法
def say_hello(self):
print(f"Hello, my name is {
self.name}.")
# 创建对象
person1 = Person("Alice", 25)
person2 = Person("Bob", 30)
# 访问对象的属性和调用方法
print(person1.name) # 输出结果为 "Alice"
print(person2.age) # 输出结果为 30
person1.say_hello() # 输出结果为 "Hello, my name is Alice."
在上述代码中,我们定义了一个Person
类,它具有类属性species
、实例属性name
和age
,以及实例方法say_hello()
。通过创建Person
类的两个对象person1
和person2
,我们可以访问对象的属性和调用对象的方法。
2. 封装
- 封装(Encapsulation):封装是一种将数据和对数据的操作封装在一起的机制,使其成为一个独立的单位。通过封装,对象的内部状态和实现细节对外部是不可见的,只提供有限的接口进行访问和操作。
封装的目的是隐藏对象的内部实现细节,提供一种抽象的方式与对象进行交互,减少对对象内部变化的影响,并提高代码的安全性和可维护性。
以下是一个封装的示例:
class BankAccount:
def __init__(self, account_number, balance):
self.account_number = account_number
self.__balance = balance
def deposit(self, amount):
self.__balance += amount
def withdraw(self, amount):
if amount <= self.__balance:
self.__balance -= amount
else