初始Python篇(10)—— 初识 类与对象
(专为零基础/转行/面试准备设计,2026 年最新版)
这是 Python 入门系列的最重要一篇,也是从“会写代码”到“会写工程代码”的分水岭。
1. 为什么需要类?(先说白话,让你一下子懂)
想象你要管理“学生”信息:
用变量写(最原始):
name1 = "张三"
age1 = 18
score1 = 95
name2 = "李四"
age2 = 19
score2 = 88
→ 100 个学生就要写 300 行变量,太乱!
用类(Class)写(面向对象):
class Student:
pass # 后面会填内容
s1 = Student() # s1 就是一个“学生对象”
s2 = Student() # s2 是另一个独立的学生对象
一个类 = 一个“模板”,可以批量生产很多“对象”(实例)。
一句话总结:
类(Class)是模板,对象(Object/Instance)是根据模板造出来的具体东西。
2. 类的基本写法(手敲 3 遍记住)
class Student: # 类名建议大驼峰(CamelCase)
"""这是一个学生类""" # 类文档字符串(docstring)
# 类属性(所有学生共有的)
school = "第一中学" # 属于类,不属于某个学生
# 初始化方法(构造器)—— 对象出生时自动执行
def __init__(self, name, age): # self 必须写在第一个参数
self.name = name # 实例属性(每个学生自己有)
self.age = age
self.score = 0 # 默认值
# 普通方法(实例方法)
def study(self):
print(f"{self.name} 正在学习...")
def exam(self, score):
self.score = score
print(f"{self.name} 考试得了 {score} 分")
3. 创建对象 + 使用对象(超级简单)
# 创建两个学生对象
s1 = Student("张三", 18)
s2 = Student("李四", 19)
# 使用对象
print(s1.name) # 张三
print(s2.age) # 19
print(s1.school) # 第一中学 (类属性,所有学生共享)
s1.study() # 张三 正在学习...
s2.exam(95) # 李四 考试得了 95 分
print(s2.score) # 95
4. 核心概念图解(面试/理解必看)
类 Student(模板)
├── 类属性:school = "第一中学"
├── __init__(self, name, age) ← 构造器
├── study(self) ← 实例方法
└── exam(self, score)
对象 s1(实例)
├── name = "张三"
├── age = 18
├── score = 0
└── school(从类里找)
对象 s2(实例)完全独立
5. self 到底是什么?(最容易懵的地方)
self代表当前对象本身- 在类里面写方法时,必须把
self写在第一个参数 - 调用方法时 不用手动传,Python 自动把对象传进去
# 调用时这样写:
s1.study() # Python 自动变成:Student.study(s1)
# 类里面这样定义:
def study(self):
print(self.name) # self 就是 s1
记住口诀:“谁调用方法,self 就是谁”
6. 类属性 vs 实例属性(面试必问)
class Student:
school = "第一中学" # 类属性
def __init__(self, name):
self.name = name # 实例属性
s1 = Student("张三")
s2 = Student("李四")
print(s1.school) # 第一中学
print(s2.school) # 第一中学
Student.school = "第二中学" # 修改类属性,所有对象都变!
print(s1.school) # 第二中学
print(s2.school) # 第二中学
s1.school = "第三中学" # 给 s1 新增实例属性(屏蔽类属性)
print(s1.school) # 第三中学
print(s2.school) # 第二中学(s2 仍然走类属性)
7. 魔法方法快速预览(以后会详细讲)
def __str__(self):
return f"学生:{self.name},年龄:{self.age}"
print(s1) # 自动调用 __str__,输出更友好
8. 完整小练习(现在就敲!)
class Dog:
species = "犬科" # 类属性
def __init__(self, name, age):
self.name = name
self.age = age
self.tricks = [] # 每只狗有自己的技能列表
def teach(self, trick):
self.tricks.append(trick)
print(f"{self.name} 学会了 {trick}")
def show(self):
print(f"{self.name} 会:{self.tricks}")
# 使用
d1 = Dog("旺财", 3)
d2 = Dog("小黑", 5)
d1.teach("握手")
d1.teach("打滚")
d2.teach("汪汪叫")
d1.show()
d2.show()
总结:一句话记住本篇所有内容
类是模板,对象是实例;init 是出生时执行的方法;self 代表当前对象;用 . 属性 来访问数据和行为。
本篇结束,你已经正式进入面向对象编程世界!
下一讲(初始Python篇 11)我将深入讲解:
- 三大特性:封装、继承、多态
- 私有属性(__xxx)
- @property 装饰器
- 类方法、静态方法
- 继承与 super()
想现在就看下一讲吗?
或者我先给你出一套 “类与对象” 专属练习题 + 面试真题(10 道)?
直接回复 “下一讲” 或 “练习题” 即可~
继续加油!你已经比 80% 的 Python 初学者走得更远了!🚀