点击蓝字
关注我们
【Python小白速通】类的属性与初始化?说白了就是"给模板填标配+设初始值"!
咱之前唠了类和实例化,类是"奶茶模板",实例化是"做具体奶茶"。但光有空模板没用——得先规定奶茶该有"价格、甜度、口味"这些标配(属性),还得给这些标配设好默认值(初始化),不然做出来的奶茶没味、没价,顾客根本没法点!
简单说,类的属性是"模板里规定的必带特征",初始化是"造东西时自动给这些特征填初始值",像买新手机(实例化),出厂时(初始化)就自带"电量50%、语言中文、系统最新版"(属性),不用你手动调,主打一个"开箱即用,标配拉满"~
一、先唠透:啥是类的属性与初始化?(纯人话版)
先掰碎了说,不整专业术语:
- 类的属性:某类东西的"标配特征",比如奶茶的「价格、甜度、口味」,手机的「品牌、内存、颜色」——是区分这类东西的核心标签;
- 初始化(__init__):造对象时自动执行的"赋值动作",给属性填初始值,比如做奶茶时默认"18元、5分糖、原味",不用每次都手动说;
- 核心关系:属性是"要填的坑",初始化是"造东西时自动填坑的动作",缺一不可!
举个栗子:你开奶茶店,"奶茶模板"里得先写清楚要记录「口味、价格、甜度」(属性),然后规定"新做的奶茶默认18元、5分糖,口味必须顾客选"(初始化)——这样店员做奶茶时,不用你说就知道基础配置,只需要确认口味就行,效率拉满~
二、实操!3步搞定属性与初始化,小白也能秒会
核心逻辑:`__init__`方法里用`self.属性名 = 值`定义并初始化属性,咱用"奶茶类"举例,代码都标了"人话注释",复制就能跑~
第一步:基础款——必传属性+默认属性(新手入门)
属性分两种:必须选的(比如口味)、有默认值的(比如价格、甜度),初始化时区分清楚!
python
#定义奶茶类:核心是__init__初始化方法
class MilkTea:
# __init__是"初始化魔法方法",造对象时自动跑
# self = 当前这杯奶茶,taste=必传属性,price/sugar=默认属性
def __init__(self, taste, price=18, sugar=5):
# 给当前奶茶赋值属性:把参数存成对象的"特征"
self.taste = taste # 口味(必传,没口味做不了奶茶)
self.price = price # 价格(默认18元,可自定义)
self.sugar = sugar # 甜度(默认5分糖,可改)
#实例化1:只传必传属性(口味),用默认价格/甜度
pearl_tea = MilkTea("珍珠")
print(f"🍵 珍珠奶茶:{pearl_tea.price}元,{pearl_tea.sugar}分糖")
#实例化2:传必传属性+自定义默认属性
taro_tea = MilkTea("芋泥", price=20, sugar=3)
print(f"🍵 芋泥奶茶:{taro_tea.price}元,{taro_tea.sugar}分糖")
👉 运行结果:
🍵 珍珠奶茶:18元,5分糖
🍵 芋泥奶茶:20元,3分糖
第二步:进阶款——给属性加"技能联动"(实用版)
初始化的属性能和类的方法联动,比如改甜度后,属性值会实时更新~
python
class MilkTea:
def __init__(self, taste, price=18, sugar=5):
self.taste = taste
self.price = price
self.sugar = sugar
# 新增方法:改无糖,直接修改self.sugar属性
def no_sugar(self):
self.sugar = 0
print(f"✅ {self.taste}奶茶已改无糖!当前甜度:{self.sugar}")
# 新增方法:加加料,修改self.price属性
def add_topping(self, topping):
self.price += 3
print(f"✅ 加了{topping}!当前价格:{self.price}元")
#实例化+调用方法,看属性变化
grape_tea = MilkTea("葡萄")
grape_tea.no_sugar() # 改甜度属性
grape_tea.add_topping("椰果") # 改价格属性
👉 运行结果:
✅ 葡萄奶茶已改无糖!当前甜度:0
✅ 加了椰果!当前价格:21元
第三步:彩蛋款——类属性(所有对象共用)
除了每个对象独有的"实例属性",还有所有对象共用的"类属性",比如奶茶店所有奶茶都收"打包费1元"~
python
class MilkTea:
# 类属性:所有奶茶共用,写在__init__外面
pack_fee = 1 # 打包费1元,不管啥奶茶都要收
def __init__(self, taste, price=18, sugar=5):
# 实例属性:每个奶茶独有的特征
self.taste = taste
self.price = price + self.pack_fee # 价格=基础价+打包费
self.sugar = sugar
实例化两杯奶茶,看类属性是否共用
pearl_tea = MilkTea("珍珠")
mango_tea = MilkTea("芒果", price=22)
print(f"🍵 珍珠奶茶总价(含打包费):{pearl_tea.price}元")
print(f"🍵 芒果奶茶总价(含打包费):{mango_tea.price}元")
print(f"📢 所有奶茶打包费:{MilkTea.pack_fee}元")
👉 运行结果:
🍵 珍珠奶茶总价(含打包费):19元
🍵 芒果奶茶总价(含打包费):23元
📢 所有奶茶打包费:1元
三、避坑小彩蛋:新手最容易踩的3个坑
1. 别漏self:初始化时属性必须写`self.属性名`,比如`self.taste = taste`,少了self就成了"局部变量",对象根本认不到!就像给奶茶加了糖,却藏在吧台里,顾客喝不到,纯纯白加~
2. `__init__`别写错:前后各两个下划线!别写成`_init_`或`init`,写错了初始化方法不执行,属性全是"空值"——像奶茶没加糖没加茶,就是一杯白水,没法卖~
3. 类属性vs实例属性别搞混:类属性写在`__init__`外(所有对象共用),实例属性写在`__init__`内(每个对象独有)!比如把`pack_fee`写进`__init__`,每杯奶茶的打包费就会重复算,顾客得骂街~
四、属性+初始化核心逻辑(大白话图解)
定义类 → 写__init__初始化方法
→ 必传属性:taste(口味)
→ 默认属性:price(价格)、sugar(甜度)
→ 类属性:pack_fee(打包费)
实例化对象 → 自动执行__init__
→ 给对象赋初始属性值
→ 对象可操作属性(改甜度/价格)
总结
1. Python类的属性分「实例属性」(对象独有,写在__init__内)和「类属性」(所有对象共用,写在__init__外);
2. __init__是初始化魔法方法,实例化时自动执行,核心作用是给属性赋初始值,格式为`self.属性名 = 值`;
3. 记住"self不能漏、__init__别写错、类/实例属性分清楚",能避开90%的属性与初始化坑。

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