Python类里函数叫方法_init不用你喊自己跑

上一节我们聊了面向对象的基本概念——类是图纸,实例是房子,实例化是施工。但图纸到底怎么画?这节就上手写代码,真正定义一个类。

结果刚写第一行,很多人就懵了:定义函数用 def,定义类用什么?类名怎么起?类里面写函数还是叫函数吗?还有个奇怪的 __init__ 方法,名字带两坨下划线,还不用你自己喊它就跑了——这都什么跟什么?

别急,一个一个来。

一、class关键字:定义类不用def

定义函数的时候,你写 def 开头。定义类呢?换关键字,写 class。

这就好比——进厨房做饭,你得先知道用炒锅还是蒸锅。def 是炒函数那口锅,class 是炖类那口锅,锅不一样,但都是进厨房干活。

基本语法长这样:

class Person:
    # 类里面的内容写在这里,别忘了缩进
    pass

拆开看:

跟定义函数一个套路:def + 函数名 + 冒号 + 回车 + 缩进写内容。类就是 class + 类名 + 冒号 + 回车 + 缩进写内容。只是关键字换了,套路一模一样。

二、类名命名规范:大驼峰

你看上面的类名叫 Person,首字母 P 是大写的。这不是随便写的,是有规矩的。

Python 里类名通常使用大驼峰命名法。啥叫大驼峰?每个单词的首字母都大写,像骆驼的驼峰一样一高一高。

命名法

样子

用在哪

大驼峰

MyPerson、StudentInfo

类名

小驼峰

myPerson、studentInfo

Java/JS 常用,Python 少用

下划线

my_person、student_info

变量名、函数名

所以你看到 Person、StudentInfo、MyFirstClass 这种每个单词首字母都大写的名字,基本可以断定——这是个类名。

注意:类名首字母大写是约定俗成,不是语法强制。你写 person 也不会报错,但别人一看就知道你是新手。就像穿拖鞋去面试,没人拦你,但印象分没了。

三、方法 vs 函数:进了类就改姓

这是第一个让新手愣住的概念:你在类里面写一个 def,它就不叫"函数"了,改叫方法

不是开玩笑,是真的改姓了。

位置

叫什么

例子

类的外面

函数(Function)

def eat():


写在类外面 → 函数

类的里面

方法(Method)

def eat(self):


写在类里面 → 方法

为啥要换名字?因为同一个东西,放在不同的位置,身份就变了。就像同一个人,在公司叫"员工",回到家叫"爸爸",人还是那个人,但身份不同了。

一句话记住:定义在类中的函数 = 方法。从今天起,在类里面写 def,请叫它"方法",别再叫"函数"了。

四、__init__方法:类里的第一个方法

写类不能瞎写,得有个规矩。通常情况下,类里面第一个写的方法叫 __init__。

先看看它长什么样:

class Person:
    def __init__(self):
        # 初始化代码写这里
        pass

这个方法名字很特殊——左右各两个下划线,中间夹着 init。看起来像被下划线"保护"起来了。

它叫什么?

__init__ 的中文名字叫初始化方法。"init" 就是 initialize(初始化)的缩写。

它干什么?

它的主要作用只有一个:给当前正在创建的实例对象添加属性

说人话——你开了一家造人工厂(类),每造一个人(实例),都得给他登记姓名、年龄、性别。__init__ 就是那个登记表,每来一个新人,自动填表。

它长什么样?

class Person:
    def __init__(self, name, age, gender):
        self.name = name       # 给实例添加姓名属性
        self.age = age         # 给实例添加年龄属性
        self.gender = gender   # 给实例添加性别属性

信息量有点大,拆开看。

五、self:造谁它就是谁

__init__ 方法接收的参数分两类:

参数类型

位置

代表什么

self

第一个参数

当前正在创建的实例对象

自定义参数

self 后面

name、age、gender 等,你说了算

self 是最让新手困惑的参数。它到底是什么?

用"造人工厂"来理解:

self 不是固定的某个人,是"当前正在被制造的那个人"。谁在被造,self 就是谁。

self 的本质:当前正在创建的实例对象。你不用管它是谁,Python 会自动帮你把正在创建的对象塞进去。你只需要在第一个参数位置写上 self,占好座位就行。

六、self.属性 = 值:给实例贴标签

知道了 self 是谁,接下来看 __init__ 里面干了什么:

def __init__(self, name, age, gender):
    self.name = name       # self.name 是属性名,name 是参数名
    self.age = age         # self.age 是属性名,age 是参数名
    self.gender = gender   # self.gender 是属性名,gender 是参数名

这三行代码干的事都一样——给实例对象添加属性

语法是:self.属性名 = 值

拿 self.name = name 这行来拆:

部分

是什么

解释

self

实例对象

当前正在创建的那个人

.name

属性名

给这个人贴的标签叫"name"

=

赋值

把右边的值塞进去

name

参数值

从外面传进来的名字

最大的易混点:self.name 和 name 是两个不同的东西!self.name — 属性名,是实例对象上的一个标签。name — 参数名,是外面传进来的值。它俩可以同名(都叫 name),也可以不同名(比如 self.n = name)。但通常写成同名,方便理解——属性叫 name,值也叫 name,一一对应。再打个比方:你去办入职,HR 让你填表。

七、__init__不用你喊:创建对象时自动跑

这是第二个让新手愣住的地方:__init__ 方法不需要你自己调用

回忆一下普通函数怎么用——定义完得自己喊一声:

def eat():
    print("吃饭")

eat()  # 得自己喊,不然它不动

但 __init__ 不一样。当你创建实例对象的时候,Python 会自动调用它,不用你操心。

# 创建实例(下一节才细讲,先看一眼)
p1 = Person("张三", "20", "男")
# Python 在背后自动干了这件事:
# Person.__init__(p1, "张三", "20", "男")
# 你没写这行,但 Python 帮你喊了

为什么不用自己喊?因为 __init__ 是 Python 内置的特殊方法(双下划线开头结尾的方法都是特殊的)。Python 对这些方法有特殊待遇——在特定时机自动触发。__init__ 的触发时机就是"创建实例对象的那一刻"。

八、__init__名字不能改

既然 __init__ 是 Python 内置的特殊方法名,那你能改成 __start__ 或 __begin__ 吗?

不能。

因为 Python 在创建实例时,是按名字找 __init__ 的。你改了名字,Python 就找不到这个方法了,不会自动调用它。

名字

Python 认不认

自动调用

__init__

会自动调用

__start__

不认

不会调用

init

不认

不会调用

my_init

不认

不会调用

规矩:__init__ 这个名字是 Python 规定的,左右各两个下划线,一个都不能少,拼写也不能改。你就当它是固定搭配,照着写就行。

九、完整代码回顾

把上面所有知识点串起来,一个完整的类定义长这样:

# 定义一个 Person 类
class Person:
    # 初始化方法:给实例添加属性
    def __init__(self, name, age, gender):
        self.name = name         # 姓名
        self.age = age           # 年龄
        self.gender = gender     # 性别

逐行拆解:

行号

代码

干的事

1

class Person:

用 class 关键字定义类,类名 Person(大驼峰,首字母大写)

2

def __init__(self, name, age, gender):

定义初始化方法,self 是当前实例,后面三个是自定义参数

3

self.name = name

给实例添加 name 属性,值来自参数 name

4

self.age = age

给实例添加 age 属性,值来自参数 age

5

self.gender = gender

给实例添加 gender 属性,值来自参数 gender

十、三个必须记住的关键点

1. class 关键字定义类,类名用大驼峰
class Person:,不是 def Person:,首字母大写是约定。

2. 类里的函数叫方法,第一个写 __init__
函数进了类就改叫方法。__init__ 是初始化方法,名字固定不能改,左右各两个下划线。

3. self 是当前实例,__init__ 自动调用
self 代表正在创建的对象,造谁它就是谁。__init__ 不用你喊,创建实例时 Python 自动调用。

总结

定义类的套路就五步:

步骤

写什么

注意

1. 关键字

class

不是 def

2. 类名

Person

大驼峰,首字母大写

3. 冒号+缩进

:


+ 回车

跟 if/def 一样

4. 写 __init__

def __init__(self, ...):

名字不能改,self 必须有

5. 添加属性

self.属性 = 参数

self.属性名 和 参数名 是两回事

这节只讲了怎么定义类,还没讲怎么创建实例。就像你学会了怎么画图纸,但还没开始施工。下一节就是施工——用图纸盖房子,用类创建对象。

先把定义类这步吃透,下节上手就顺了。

展开阅读全文

更新时间:2026-07-25

标签:科技   函数   方法   实例   属性   定义   参数   驼峰   对象   下划线   名字

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight All Rights Reserved.
Powered By 71396.com 闽ICP备11008920号
闽公网安备35020302034844号

Top