一个小时带你学会Python

Python面向对象编程全攻略:从基础到进阶

一、面向对象核心思想

1.1 面向对象 vs 面向过程

  • 面向过程:关注"如何一步步解决问题"(亲力亲为)
    • 示例:小明亲自完成"买配件-运输-组装"全流程
  • 面向对象:关注"委托实体解决问题"(分工协作)
    • 示例:小明委托老王完成整个电脑组装流程
  • 语言特性:Python/C#/Java等支持OO,C语言偏向过程式

1.2 类与对象的本质

  • :具有相同特征和行为的对象集合(Dog类定义所有狗的共性)
  • 对象:类的具体实例(每只狗都是Dog类的对象)
  • 关系:类是模板(Dog),对象是实例(哮天犬/大黄)

二、类设计与对象管理

2.1 构造方法与魔术方法

class Dog:
    def __init__(self, name, color):  # 初始化方法
        self.name = name
        self.color = color
    
    def __str__(self):  # 字符串表示
        return f"{self.color}的{self.name}"

2.2 常用魔术方法速查表

方法名触发时机典型应用
__init__对象初始化属性赋值
__del__对象销毁资源释放
__add__+运算自定义加法逻辑
__eq__==比较内容比较替代地址
__str__str()/print()可读字符串格式

三、面向对象三大支柱

3.1 封装:数据保护机制

  • 访问控制
    class Person:
        def __init__(self, age):
            self.__age = age  # 私有属性
        
        @property
        def age(self):       # 安全访问器
            return self.__age
        
        @age.setter
        def age(self, value):
            if 0 <= value <= 150:
                self.__age = value
    

3.2 继承:代码复用利器

  • 继承关系
    class Animal:
        def speak(self):
            print("动物叫声")
    
    class Dog(Animal):  # 单继承
        def speak(self):  # 方法重写
            print("汪汪汪")
    
    class FlyingDog(Dog, Bird):  # 多继承
        pass
    

3.3 多态:接口统一性

def make_sound(animal):
    animal.speak()

dog = Dog()
cat = Cat()
make_sound(dog)  # 输出汪汪汪
make_sound(cat)  # 输出喵喵喵

四、高级特性解析

4.1 类属性与类方法

class Student:
    count = 0  # 类属性
    
    @classmethod
    def get_total(cls):
        return cls.count

s1 = Student()
s2 = Student()
Student.count = 100  # 通过类修改
print(s1.count)       # 输出100

4.2 静态方法与工具类

class MathUtils:
    @staticmethod
    def add(a, b):
        return a + b

result = MathUtils.add(3, 5)  # 不需要实例化

4.3 异常处理机制

  • 异常处理结构

    try:
        num = int(input("输入数字:"))
    except ValueError:
        print("请输入有效数字!")
    else:
        print(f"成功获取数字:{num}")
    finally:
        print("程序结束")
    
  • 自定义异常

    class AgeError(Exception):
        pass
    
    def set_age(age):
        if not (0 <= age <= 150):
            raise AgeError("年龄范围错误")
    

五、性能优化技巧

5.1 __slots__内存优化

class Point:
    __slots__ = ['x', 'y']  # 限制属性,节省内存
    def __init__(self, x, y):
        self.x = x
        self.y = y

5.2 动态绑定特性

p = Point(1, 2)
p.z = 3  # 动态添加属性(仅当前实例有效)

结语:面向对象设计原则

  • 高内聚低耦合:类内部高度相关,类间依赖最小化
  • 开闭原则:对扩展开放,对修改关闭
  • 里氏替换:子类应能替换父类而不影响功能
  • 接口隔离:设计细粒度的接口,避免臃肿

实践建议:从简单类设计开始,逐步引入继承和多态。通过封装保护数据,利用类方法管理共享状态,善用异常处理提升程序健壮性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值