点击蓝字
关注我们
【Python小白速通】定义类?说白了就是"给代码造个'模板工厂'"!
咱之前唠的函数、递归,都是"单打独斗"的代码——算奶茶价、倒计时,干的都是单一活。但现实里的东西都是"有属性、有技能"的,比如一杯奶茶有"价格、甜度、口味",还能"加珍珠、去冰",总不能给每个属性都写个函数吧?这时候**定义类**就登场了!
简单说,类就是给一类东西造"通用模板",比如"奶茶模板"里规定好所有奶茶都有价格、甜度,都能加加料,用这个模板能批量造"珍珠奶茶、芋泥奶茶"这些具体的奶茶,主打一个"批量生产、统一管理",像奶茶店的标准化配方,按配方能做无数杯同款奶茶~
一、先唠透:啥是类?(纯人话版)
先掰碎了说,不整专业术语:
- 类(Class):某类事物的"通用模板",比如"奶茶类",规定了所有奶茶都有「价格、甜度、口味」这些属性,都有「加加料、改甜度」这些技能;
- 对象(Object):用类造出来的"具体东西",比如"一杯珍珠奶茶""一杯芋泥奶茶",都是"奶茶类"的实例;
- 定义类:用`class`关键字写模板,比如`class MilkTea:`,把这类东西的属性、技能都写进去。
举个栗子:你开奶茶店,先定"奶茶模板"(类):
- 属性(静态特征):价格(18元)、甜度(5分)、口味(默认原味);
- 方法(动态技能):加珍珠、改无糖、加冰。
用这个模板做的每一杯奶茶(对象),都能继承这些属性和技能,不用每做一杯都重新定规则——这就是类的精髓!
二、实操!3步搞定类的定义,小白也能秒会
定义类的核心:`class 类名:` → 写属性 → 写方法,咱用"奶茶类"举例,代码都标了"人话注释",复制就能跑~
第一步:最基础的类定义(搭模板框架)
先造空模板,再加"初始化方法"给对象赋初始属性,新手先拿捏这个!
python
#定义"奶茶类":造奶茶的通用模板
class MilkTea:
# __init__是"初始化方法",造对象时自动执行,给奶茶赋初始属性
# self是"当前对象自己",比如造珍珠奶茶时,self就是这杯珍珠奶茶
def __init__(self, taste, price=18, sugar=5):
# 给奶茶加属性:口味、价格、甜度
self.taste = taste # 必传属性:口味(珍珠/芋泥/原味)
self.price = price # 默认属性:价格18元
self.sugar = sugar # 默认属性:甜度5分
# 给奶茶加"技能":改无糖
def change_to_no_sugar(self):
self.sugar = 0
print(f"✅ {self.taste}奶茶已改成无糖!")
# 给奶茶加"技能":加加料
def add_topping(self, topping):
self.price += 3 # 加料加3元
print(f"✅ {self.taste}奶茶加了{topping},价格变成{self.price}元!")
#用模板造具体奶茶(对象):一杯珍珠奶茶
pearl_tea = MilkTea("珍珠")
#打印初始属性:看看这杯奶茶的初始状态
print(f"🍵 初始状态:{pearl_tea.taste}奶茶,价格{pearl_tea.price}元,{pearl_tea.sugar}分糖")
👉 运行结果:
🍵 初始状态:珍珠奶茶,价格18元,5分糖
第二步:调用类的方法(让对象"干活")
造好对象后,调用模板里的"技能",比如给珍珠奶茶改无糖、加珍珠~
python
#接上面的代码:给珍珠奶茶改无糖
pearl_tea.change_to_no_sugar()
#给珍珠奶茶加芋圆(加料)
pearl_tea.add_topping("芋圆")
print(f"🍵 最终状态:{pearl_tea.taste}奶茶,价格{pearl_tea.price}元,{pearl_tea.sugar}分糖")
👉 运行结果:
✅ 珍珠奶茶已改成无糖!
✅ 珍珠奶茶加了芋圆,价格变成21元!
🍵 最终状态:珍珠奶茶,价格21元,0分糖
第三步:批量造对象(模板的核心价值)
一个类模板能造无数个对象,比如再造一杯芋泥奶茶,不用重新写规则~
python
#造第二杯奶茶:芋泥奶茶,自定义价格20元,3分糖
taro_tea = MilkTea("芋泥", price=20, sugar=3)
taro_tea.add_topping("椰果")
print(f"🍵 芋泥奶茶最终状态:价格{taro_tea.price}元,{taro_tea.sugar}分糖")
👉 运行结果:
✅ 芋泥奶茶加了椰果,价格变成23元!
🍵 芋泥奶茶最终状态:价格23元,3分糖
三、避坑小彩蛋:新手最容易踩的3个坑
1. 别漏self:类里的方法第一个参数必须是`self`!比如`def change_to_no_sugar(self):`,少了self,Python会懵:"你改的是哪杯奶茶的甜度?" 就像奶茶店老板改甜度,没说改哪一杯,纯纯瞎忙活~
2. `__init__`别写错:初始化方法是`__init__`(前后各两个下划线),别写成`_init_`或`init`!写错了造对象时不会自动赋值,像奶茶模板漏了配方,做出来的奶茶没味道~
3. 类名首字母要大写:虽然Python不强制,但这是行业规矩!比如`class MilkTea:`,别写成`class milktea:`,就像奶茶店招牌写"nongshim奶茶",看着就不专业~
四、类vs函数(大白话对比)
| 特点 | 类(模板工厂)| 函数(单打独斗)|
|------|--------------|--------------|
| 核心作用 | 批量造"有属性+有技能"的对象 | 实现单一功能(算价格、倒计时) |
| 复用性 | 高(一个模板造无数对象)| 中(只能复用单个功能)|
| 适用场景 | 描述"有特征、有行为"的事物(奶茶、汽车、用户) | 单一操作(计算、打印、排序) |
| 新手友好度 | 稍低(需要理解属性/方法)| 高(逻辑简单)|
总结
1. Python定义类核心是用`class 类名:`造"通用模板",通过`__init__`给对象赋初始属性,用def定义对象的"技能(方法)";
2. `self`是类方法的必备参数,代表"当前对象自己",`__init__`是初始化方法,造对象时自动执行;
3. 类适合描述"有属性、有行为"的事物,能批量创建对象,比单一函数更贴合现实场景。

扫码关注我们
知识奇妙世界