Practical Use Cases
Command-Line Utility Classes
class FileConverter:
def __init__(self, input_file):
self.input_file = input_file
def convert_to_csv(self):
## Conversion logic
print(f"Converting {self.input_file} to CSV")
@classmethod
def run(cls):
import sys
if len(sys.argv) > 1:
converter = cls(sys.argv[1])
converter.convert_to_csv()
else:
print("Usage: python script.py <input_file>")
if __name__ == "__main__":
run()
Configuration Management
class ConfigManager:
def __init__(self, config_path):
self.config = self.load_config(config_path)
def load_config(self, path):
## Configuration loading logic
return {"database": "localhost", "port": 5432}
def get_config(self, key):
return self.config.get(key)
@classmethod
def run(cls):
config = cls("/etc/myapp/config.json")
print(f"Database: {config.get_config('database')}")
if __name__ == "__main__":
run()
Use Case Comparison
Use Case |
Description |
Key Benefits |
CLI Utility |
Execute complex operations directly |
Flexible script-like behavior |
Configuration Management |
Load and process configuration |
Centralized configuration handling |
Data Processing |
Transform and manipulate data |
Reusable data processing logic |
Automated Testing |
Create self-executing test classes |
Simplified testing workflows |
Data Processing Automation
class DataProcessor:
def __init__(self, data_source):
self.data = self.load_data(data_source)
def load_data(self, source):
## Data loading mechanism
return [1, 2, 3, 4, 5]
def process(self):
return [x * 2 for x in self.data]
@classmethod
def run(cls):
processor = cls("sample_data.csv")
processed_data = processor.process()
print(f"Processed Data: {processed_data}")
if __name__ == "__main__":
run()
Mermaid Execution Workflow
flowchart TD
A[Initialize Class] --> B[Load Data/Config]
B --> C{Execution Context}
C -->|Direct Execution| D[Run Main Method]
C -->|Module Import| E[Provide Class Methods]
D --> F[Process/Transform]
F --> G[Output Results]
Advanced Execution Patterns
class MultiPurposeClass:
@classmethod
def run_diagnostic(cls):
print("Running system diagnostic")
@classmethod
def run_backup(cls):
print("Performing data backup")
@classmethod
def run(cls):
import sys
actions = {
"diagnostic": cls.run_diagnostic,
"backup": cls.run_backup
}
if len(sys.argv) > 1:
action = sys.argv[1]
actions.get(action, lambda: print("Invalid action"))()
if __name__ == "__main__":
run()
Best Practices for LabEx Developers
- Design classes with clear, single responsibilities
- Implement flexible execution methods
- Support both direct execution and module import
- Add robust error handling
- Consider different execution contexts