方法封装是将一些通用的功能或操作抽象成独立的方法,以便在不同的地方重复使用。这样可以提高代码的可读性、可维护性和可扩展性。以下是一些常见的方法封装示例:
1. 封装计算逻辑
假设我们有一个需求:计算一个数的平方。
```python
不封装的情况
def square(x): return x * x
print(square(5)) # 输出 25 print(square(10)) # 输出 100 ```
封装后的代码:
```python
封装后的情况
class Calculator: @staticmethod def square(x): return x * x
print(Calculator.square(5)) # 输出 25 print(Calculator.square(10)) # 输出 100 ```
2. 封装文件读写操作
假设我们需要从一个文件中读取数据并进行处理。
```python
不封装的情况
def read_file(file_path): with open(file_path, 'r') as file: data = file.read() return data
def process_data(data): # 假设这里是一些数据处理逻辑 processed_data = data.upper() return processed_data
file_path = 'example.txt' data = read_file(file_path) processed_data = process_data(data) print(processed_data) # 输出处理后的数据 ```
封装后的代码:
```python
封装后的情况
class FileProcessor: @staticmethod def read_file(file_path): with open(file_path, 'r') as file: data = file.read() return data
@staticmethod
def process_data(data):
# 假设这里是一些数据处理逻辑
processed_data = data.upper()
return processed_data
class DataProcessor: @staticmethod def process_file(file_path): data = FileProcessor.read_file(file_path) processed_data = FileProcessor.process_data(data) return processed_data
file_path = 'example.txt' processed_data = DataProcessor.process_file(file_path) print(processed_data) # 输出处理后的数据 ```
3. 封装数据库操作
假设我们需要从一个数据库中查询数据并进行处理。
```python
不封装的情况
import sqlite3
def query_database(query): conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute(query) data = cursor.fetchall() conn.close() return data
def process_data(data): # 假设这里是一些数据处理逻辑 processed_data = [item[0] for item in data] return processed_data
query = 'SELECT * FROM example_table' data = query_database(query) processed_data = process_data(data) print(processed_data) # 输出查询结果 ```
封装后的代码:
```python
封装后的情况
import sqlite3
class DatabaseProcessor: @staticmethod def query_database(query): conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute(query) data = cursor.fetchall() conn.close() return data
@staticmethod
def process_data(data):
# 假设这里是一些数据处理逻辑
processed_data = [item[0] for item in data]
return processed_data
class DataProcessor: @staticmethod def process_database(query): data = DatabaseProcessor.query_database(query) processed_data = DatabaseProcessor.process_data(data) return processed_data
query = 'SELECT * FROM example_table' processed_data = DataProcessor.process_database(query) print(processed_data) # 输出查询结果 ```
通过方法封装,我们可以将复杂的逻辑分解成更小的、可重用的部分,从而提高代码的可读性和可维护性。