面向对象编程(OOP)基础超详细教程 | 小白也能看懂的Python版

一、什么是面向对象?(最通俗的解释)

面向对象 = 用“对象”的思路来写代码

  • 现实世界:一切皆对象(人、狗、手机、汽车、学生…)
  • 编程世界:把现实事物抽象成类(Class)和对象(Object)

一句话记住:

  • 类 = 模板 / 图纸
  • 对象 = 根据图纸造出来的具体东西

例子:

  • 类:学生(有名字、年龄、会学习、会吃饭)
  • 对象:张三、李四、王五(一个个具体的学生)

二、面向对象核心2个概念

1. 类(Class)

  • 是抽象的模板
  • 包含两部分:
    1. 属性(特征):名字、年龄、身高…
    2. 方法(行为):吃饭、睡觉、学习、跑步…

2. 对象(Object / 实例)

  • 根据类创建出来的具体个体
  • 一个类可以创建无数个对象

三、Python 类的基本语法(必须背会)

1. 定义一个类

# 定义类:class 类名():
class Student:
    # 1. 构造方法:创建对象时自动执行(最重要)
    def __init__(self, name, age):
        # 属性:赋值给 self
        self.name = name   # 姓名
        self.age = age     # 年龄

    # 2. 方法(行为)
    def study(self):
        print(f"{self.name}今年{self.age}岁,正在学习面向对象!")

    def eat(self):
        print(f"{self.name}正在吃饭")

关键点解释(博客必写)

  • class:定义类的关键字
  • __init__:构造方法,创建对象自动调用
  • self:代表当前对象自己,必须写在第一个参数
  • self.xxx:定义属性
  • def 方法名(self):定义行为方法

2. 创建对象(实例化)

# 根据 Student 类创建对象
s1 = Student("张三", 18)
s2 = Student("李四", 19)

# 访问属性
print(s1.name)   # 张三
print(s1.age)    # 18

# 调用方法
s1.study()
s2.eat()

运行结果

张三
18
张三今年18岁,正在学习面向对象!
李四正在吃饭

四、面向对象三大特征(核心重点!面试必考)

1. 封装(Encapsulation)

是什么?

  • 把属性和方法打包到类里
  • 把不想被外部随便改的属性藏起来(私有)

为什么用?

  • 安全
  • 代码结构清晰
  • 方便维护

Python 私有属性/方法

用 两个下划线 __ 表示私有

class Student:
    def __init__(self, name, age):
        self.name = name       # 公开属性
        self.__age = age       # 私有属性(外部不能直接访问)

    # 提供公开方法访问私有属性
    def get_age(self):
        return self.__age

s = Student("小明", 18)
print(s.name)          # 可以访问
# print(s.__age)       # 报错!私有属性外部不能直接访问
print(s.get_age())     # 通过公开方法访问 ✅

2. 继承(Inheritance)

是什么?

  • 子类 继承 父类
  • 子类可以直接使用父类的属性和方法
  • 可以重写父类方法

语法

# 父类
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"我是{self.name},今年{self.age}岁")

# 子类:Student 继承 Person
class Student(Person):
    def __init__(self, name, age, score):
        # 调用父类构造方法
        super().__init__(name, age)
        # 子类自己的属性
        self.score = score

    # 子类自己的方法
    def study(self):
        print(f"{self.name}考了{self.score}分")

# 创建子类对象
s = Student("张三", 18, 99)
s.say_hello()   # 调用父类方法
s.study()       # 调用子类方法

运行结果

我是张三,今年18岁
张三考了99分

继承核心词

  • 父类/基类:被继承的类
  • 子类/派生类:继承别人的类
  • super():调用父类的方法
  • 子类拥有父类一切,并能扩展自己功能

3. 多态(Polymorphism)

是什么?

  • 同一个方法名,不同子类有不同实现
  • 强调:重写(override)

示例

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("汪汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵喵")

# 同一个函数,不同对象表现不同
def make_sound(animal):
    animal.speak()

dog = Dog()
cat = Cat()

make_sound(dog)   # 汪汪汪
make_sound(cat)   # 喵喵喵

五、面向对象常用名词解释(理解面向对象加分项)

名词 意思
类(Class) 模板、图纸
对象(Object) 实例,根据类创建的具体东西
实例化 类 → 对象 的过程
属性 变量,描述特征
方法 函数,描述行为
self 代表当前对象自己
init 构造方法,创建对象自动执行
封装 打包+隐藏私有信息
继承 子类复用父类代码
多态 同一方法,不同表现

六、完整示例:一个标准的面向对象程序

# 父类:人类
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"我叫{self.name},今年{self.age}岁")

# 子类:老师
class Teacher(Person):
    def __init__(self, name, age, subject):
        super().__init__(name, age)
        self.subject = subject

    def teach(self):
        print(f"{self.name}老师教{self.subject}")

# 子类:学生
class Student(Person):
    def __init__(self, name, age, score):
        super().__init__(name, age)
        self.score = score

    def study(self):
        print(f"{self.name}同学考了{self.score}分")

# 测试
t = Teacher("李老师", 30, "Python")
t.introduce()
t.teach()

s = Student("小明", 18, 100)
s.introduce()
s.study()

七、为什么要学面向对象?(总结)

  1. 代码更清晰:按事物分类,结构一目了然
  2. 可复用性强:继承可以少写大量代码
  3. 可维护性高:修改一处,多处生效
  4. 适合大型项目:游戏、网站、系统开发都用它
  5. 面试必考:所有编程语言都面向对象
posted @ 2026-04-04 08:26  Petula  阅读(115)  评论(0)    收藏  举报