大家好,我是 亦难
昨天刚写完开坑宣言,今天就兑现周更 flag:用 1 天时间把所有 OOP 要点撸了一遍,并做了可运行的 Demo。
如果你也在“知道 class 怎么写,却写不出优雅类”的阶段,这篇一定能帮你把零散知识串成线。


🧭 今日学习路线(脑图速览)

面向对象思想 → 类与对象 → 魔术方法 → 三大特性 → 实战案例


1️⃣ 面向过程 VS 面向对象

  • 面向过程:按步骤报名——“学生提出→缴费→分配班级”。

  • 面向对象:先找主体——学生、机构、教师、班级,再让主体各干各的事。
    一句话总结:先找“谁”,再想“干什么”


2️⃣ 类 & 对象 30 秒上手

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'{self.name}({self.age})'

p1 = Person('老王', 18)
print(p1)          # 老王(18)
  • __init__:构造函数,给对象“贴标签”。

  • __str__:打印对象时的“颜值担当”。

  • self:谁调用就指向谁,相当于每个对象的「身份证」。


3️⃣ 魔术方法全家桶速查表

方法 触发时机 常用场景
__init__ 实例化 属性初始化
__str__ print(obj) 友好打印
__del__ 对象销毁 关闭文件/数据库连接

4️⃣ 三大特性 3 张图秒懂

🔒 封装
class Girl:
    def __init__(self, name):
        self.name = name
        self.__age = 18          # 私有属性

    def get_age(self):           # 访问接口
        return self.__age

意义:把数据藏起来,只留安全窗口。


5️⃣ 实战 1:学员成绩等级

class Student:
    def __init__(self, name, score):
        self.name, self.score = name, score

    def print_grade(self):
        level = '优秀' if self.score >= 90 else \
                '良好' if self.score >= 80 else \
                '中等' if self.score >= 70 else \
                '及格' if self.score >= 60 else '不及格'
        print(f'{self.name}:{self.score}分→{level}')

tom = Student('Tom', 80); tom.print_grade()

6️⃣ 实战 2:小明减肥模拟器

class Person:
    def __init__(self, name, weight):
        self.name, self.weight = name, weight

    def __str__(self):
        return f'{self.name} 目前 {self.weight:.1f} kg'

    def run(self):   self.weight -= 0.1
    def eat(self):   self.weight += 0.2

xm = Person('小明', 75.0)
xm.eat(); xm.run(); print(xm)   # 75.1 kg

属性变状态方法变行为,OOP 的“对象感”一下就出来了。



🚩 明日预告

《继承与多态:为什么“猫”既是“动物”又是“萌宠”?》

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐