Python3 【对象编程】经典范例:15个应用示例

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 面向对象编程的核心概念和常见应用场景,适合学习和参考!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值