10.Python面向对象编程(OOP)实战指南

59 阅读3分钟

@[toc]

Python面向对象编程(OOP)实战指南

面向对象编程是Python的核心编程范式,本文将用实战案例带你掌握OOP三大特性。最后我们会实现一个完整的银行账户系统!


1. 类与对象基础:构造函数 __init__

class Dog:
    # 构造函数:初始化对象属性
    def __init__(self, name, breed):
        self.name = name    # 实例变量
        self.breed = breed  # 实例变量
    
    def bark(self):         # 实例方法
        return f"{self.name}:汪!"

# 创建对象实例
my_dog = Dog("阿黄", "金毛")
print(my_dog.bark())  # 输出:阿黄:汪!
print(f"品种:{my_dog.breed}")  # 输出:品种:金毛

关键点

  • __init__ 在对象创建时自动执行
  • self 代表当前对象实例
  • 实例变量存储对象特有数据

2. OOP三大特性 ⭐️

2.1 封装 - 数据隐藏

class TemperatureSensor:
    def __init__(self):
        self.__temperature = 0  # 私有变量
        
    def update(self, value):
        if -20 <= value <= 60:   # 数据校验
            self.__temperature = value
        else:
            print("无效温度值")
    
    def current(self):           # 公共接口
        return self.__temperature

sensor = TemperatureSensor()
sensor.update(25)
print(sensor.current())  # 输出:25
sensor.update(100)       # 输出:无效温度值

2.2 继承 - 代码复用

class Animal:
    def __init__(self, name):
        self.name = name
        
    def speak(self):
        raise NotImplementedError("子类需实现此方法")

class Cat(Animal):  # 继承Animal
    def speak(self):  # 方法重写
        return "喵~"

class Parrot(Animal):
    def speak(self):
        return "你好!"

animals = [Cat("咖啡"), Parrot("小蓝")]
for a in animals:
    print(f"{a.name} 说:{a.speak()}")
# 输出:
# 咖啡 说:喵~
# 小蓝 说:你好!

2.3 多态 - 统一接口

def animal_hello(animal):
    print(animal.speak())  # 同一方法不同表现

animal_hello(Cat("雪球"))  # 输出:喵~
animal_hello(Parrot("金刚")) # 输出:你好!

3. 实战:银行账户系统 🏦

class BankAccount:
    def __init__(self, account_holder, balance=0.0):
        self.account_holder = account_holder
        self.__balance = balance  # 封装余额
    
    def deposit(self, amount):
        """存款"""
        if amount > 0:
            self.__balance += amount
            return f"存款成功!余额:¥{self.__balance:.2f}"
        return "存款金额必须大于0"
    
    def withdraw(self, amount):
        """取款"""
        if 0 < amount <= self.__balance:
            self.__balance -= amount
            return f"取款成功!余额:¥{self.__balance:.2f}"
        return "余额不足或金额无效"
    
    def transfer(self, other_account, amount):
        """转账"""
        if self.withdraw(amount) != "余额不足或金额无效":
            other_account.deposit(amount)
            return f"向 {other_account.account_holder} 转账 ¥{amount:.2f} 成功!"
        return "转账失败:余额不足"
    
    def check_balance(self):
        """查询余额"""
        return f"当前余额:¥{self.__balance:.2f}"

# 创建两个账户
alice = BankAccount("Alice", 1000)
bob = BankAccount("Bob", 500)

print(alice.deposit(200))     # 存款成功!余额:¥1200.00
print(alice.withdraw(300))    # 取款成功!余额:¥900.00
print(alice.transfer(bob, 400))  # 向 Bob 转账 ¥400.00 成功!

print(alice.check_balance())  # 当前余额:¥500.00
print(bob.check_balance())    # 当前余额:¥900.00

print(bob.transfer(alice, 1000)) # 转账失败:余额不足

系统功能

  1. 安全的余额管理(私有变量)
  2. 存取款业务逻辑验证
  3. 账户间转账功能
  4. 数据完整性检查

下次内容预告 🔜

11. Python的高级OOP特性

  • 类方法与静态方法:@classmethod@staticmethod
  • 属性控制:@property 装饰器实战
  • 抽象基类(ABC)与接口设计
  • 操作符重载:自定义对象行为
  • 混入类(Mixins):多重继承的优雅实现

掌握这些高级特性,让你的OOP技能更上一层楼!有任何问题欢迎在评论区留言讨论~

更多技术干货欢迎关注微信公众号“科威舟的AI笔记”~

【转载须知】:转载请注明原文出处及作者信息