当前位置:首页>python>【Python小白速通】类的属性与初始化?说白了就是"给模板填标配+设初始值"!

【Python小白速通】类的属性与初始化?说白了就是"给模板填标配+设初始值"!

  • 2026-09-19 10:29:47
【Python小白速通】类的属性与初始化?说白了就是"给模板填标配+设初始值"!

点击蓝字

关注我们

【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%的属性与初始化坑。

扫码关注我们

知识奇妙世界

最新文章

随机文章