Python3 【对象编程】经典范例:15个应用示例
以下是 15 个经典的 Python 面向对象编程应用场景,每个场景都附有完整代码、解释和运行结果。
1. 创建类与对象
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name} 汪汪叫!")
# 创建对象
my_dog = Dog("旺财", 3)
my_dog.bark() # 输出: 旺财 汪汪叫!
2. 封装与私有属性
class BankAccount:
def __init__(self, balance):
self.__balance = balance # 私有属性
def deposit(self, amount):
self.__balance += amount
def get_balance(self):
return self.__balance
account = BankAccount(100)
account.deposit(50)
print(account.get_balance()) # 输出: 150
3. 继承与多态
class Animal:
def speak(self):
raise NotImplementedError("子类必须实现此方法")
class Dog(Animal):
def speak(self):
return "汪汪"
class Cat(Animal):
def speak(self):
return "喵喵"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.speak()) # 输出: 汪汪, 喵喵
4. 方法重写
class Vehicle:
def drive(self):
print("驾驶中...")
class Car(Vehicle):
def drive(self):
print("汽车驾驶中...")
car = Car()
car.drive() # 输出: 汽车驾驶中...
5. 抽象类
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
circle = Circle(5)
print(circle.area()) # 输出: 78.5
6. 运算符重载
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __str__(self):
return f"Vector({self.x}, {self.y})"
v1 = Vector(2, 3)
v2 = Vector(4, 5)
print(v1 + v2) # 输出: Vector(6, 8)
7. 静态方法与类方法
class MathUtils:
@staticmethod
def add(a, b):
return a + b
@classmethod
def info(cls):
return "这是一个数学工具类"
print(MathUtils.add(2, 3)) # 输出: 5
print(MathUtils.info()) # 输出: 这是一个数学工具类
8. 属性装饰器
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
person = Person("Alice")
print(person.name) # 输出: Alice
person.name = "Bob"
print(person.name) # 输出: Bob
9. 多重继承
class A:
def greet(self):
print("来自 A 的问候")
class B:
def greet(self):
print("来自 B 的问候")
class C(A, B):
pass
c = C()
c.greet() # 输出: 来自 A 的问候(A 在继承列表中优先)
10. 单例模式
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
s1 = Singleton()
s2 = Singleton()
print(s1 is s2) # 输出: True
11. 组合与聚合
class Engine:
def start(self):
print("引擎启动")
class Car:
def __init__(self):
self.engine = Engine() # 组合
def start(self):
self.engine.start()
car = Car()
car.start() # 输出: 引擎启动
12. 迭代器协议
class CountDown:
def __init__(self, start):
self.start = start
def __iter__(self):
return self
def __next__(self):
if self.start <= 0:
raise StopIteration
self.start -= 1
return self.start
for num in CountDown(3):
print(num) # 输出: 2, 1, 0
13. 上下文管理器
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
with FileManager("test.txt", "w") as f:
f.write("Hello, World!")
14. 动态属性
class DynamicAttributes:
def __getattr__(self, name):
return f"属性 {name} 不存在"
obj = DynamicAttributes()
print(obj.unknown) # 输出: 属性 unknown 不存在
15. 装饰器类
class Logger:
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
print(f"调用函数: {self.func.__name__}")
return self.func(*args, **kwargs)
@Logger
def say_hello(name):
return f"Hello, {name}"
print(say_hello("Alice")) # 输出: 调用函数: say_hello, Hello, Alice
这些示例涵盖了 Python 面向对象编程的核心概念和常见应用场景,适合学习和参考!