当前位置: 首页 > news >正文

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

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

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

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

一句话记住:

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

例子:

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

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

1. 类(Class)

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

2. 对象(Object / 实例)

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

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

1. 定义一个类

# 定义类:class 类名():
class Student:# 1. 构造方法:创建对象时自动执行(最重要)def __init__(self, name, age):# 属性:赋值给 selfself.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.__ages = Student("小明", 18)
print(s.name)          # 可以访问
# print(s.__age)       # 报错!私有属性外部不能直接访问
print(s.get_age())     # 通过公开方法访问 ✅

2. 继承(Inheritance)

是什么?

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

语法

# 父类
class Person:def __init__(self, name, age):self.name = nameself.age = agedef 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):passclass 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 = nameself.age = agedef introduce(self):print(f"我叫{self.name},今年{self.age}岁")# 子类:老师
class Teacher(Person):def __init__(self, name, age, subject):super().__init__(name, age)self.subject = subjectdef teach(self):print(f"{self.name}老师教{self.subject}")# 子类:学生
class Student(Person):def __init__(self, name, age, score):super().__init__(name, age)self.score = scoredef 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. 面试必考:所有编程语言都面向对象
http://www.jsqmd.com/news/585436/

相关文章:

  • Dvwa靶场通关攻略心得(Brute Force)
  • GLM-4-9B-Chat-1M镜像升级路径:从GLM-4-9B-Chat到1M版本的权重转换与验证
  • AI时代下的AOSP构建:从“效率黑洞”到“分钟级交付”,企业级构建如何破局?
  • 音频像素工坊:5分钟快速上手,体验90年代复古音频处理
  • RexUniNLU在网络安全日志分析中的威胁情报提取
  • 从 CBService 到蓝牙规范:Service、Included Service 与 Apple 的 CoreBluetooth 设计逻辑
  • seo灯塔如何与内容营销配合_seo灯塔是什么
  • Hunyuan-MT 7B翻译镜像实测:韩语俄语小语种翻译不再偏移
  • Intv_AI_MK11算法优化指南:提升推理效率的10个核心技巧
  • 保姆级教程:在CentOS 7.6上用宝塔面板+PHPStudy环境,5分钟搞定H5游戏《咸鱼之王》服务端部署
  • 如何彻底清理显卡驱动残留?DDU终极解决方案完整指南
  • Flux.1-Dev深海幻境多模态实践:结合LSTM进行时序文本引导的图像动态生成
  • 手机号查QQ号:3步找回遗忘账号的智能方案
  • QQ音乐加密文件完美解码:qmcdump让音乐重获自由播放的终极方案
  • 解锁音乐自由:qmc-decoder让QQ音乐加密文件重获新生
  • SEO 网络推广软件哪个好用
  • 免费搭建企业知识库:通义千问3-Embedding-4B向量模型实战指南
  • Cadence原理图调试神器:用Bom Variants一键隐藏不焊接的器件,硬件查板效率翻倍
  • 3步永久珍藏QQ空间青春记忆:GetQzonehistory完整备份指南
  • Windows Cleaner:基于Python的系统清理工具架构分析与技术实现
  • 李慕婉-仙逆-造相Z-Turbo的Ubuntu环境配置
  • 4大核心功能构建个人离线阅读系统:开源小说下载工具的跨场景应用指南
  • 深入理解C语言基础语法(一)
  • 2026术后体虚虫草菌丝体胶囊品牌推荐与选择 - 品牌排行榜
  • Qwen3-ASR-0.6B实操手册:长音频分段识别+时间轴对齐精准控制技巧
  • 终极窗口置顶指南:如何用AlwaysOnTop实现高效多任务管理
  • 终极ReTerraForged地形生成模组:从零开始打造你的完美Minecraft世界
  • 如何让老旧设备重获新生:开源工具OpenCore Legacy Patcher应用指南
  • 5分钟快速上手:Switch注入完整指南与TegraRcmGUI使用教程
  • 如何用WindowsCleaner解决C盘空间不足问题