初始Python篇(10)—— 初识 类与对象

初始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 初学者走得更远了!🚀

文章已创建 5041

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部