编程学习网 > 编程语言 > Python > Python面向对象OOP保姆级教程:类与实例、封装继承多态、魔术方法,从脚本进阶工程化
2026
07-27

Python面向对象OOP保姆级教程:类与实例、封装继承多态、魔术方法,从脚本进阶工程化


很多新手写Python,长期只会写面向过程代码:一堆变量、函数、循环堆砌,代码杂乱无章,项目大了难以维护、复用、拓展。

真正的Python项目、爬虫框架、数据分析工具、后端开发,全部基于 面向对象编程OOP 开发。

面向对象是从新手脚本代码跨越到工程级代码最重要分水岭。本篇零基础保姆教程,通俗讲解类、实例、三大特性、魔术方法,全程实战案例,看完彻底吃透OOP核心!


一、什么是面向对象?通俗理解

面向过程:聚焦步骤,从上到下一步步执行,适合简单小脚本。

面向对象:聚焦事物,把属性(数据)方法(功能)封装成一个整体,模拟现实事物,代码可复用、易拓展、易维护。

核心概念

类(Class:模板、抽象概念(比如:人类、手机类、学生类)

实例(对象):根据模板创建的具体个体(张三、iPhone15

属性:对象的特征(姓名、年龄、颜色)

方法:对象的行为(说话、跑步、拍照)


二、类与实例:零基础手写第一个类

语法格式

class 类名:  # 属性  # 方法

规范:类名推荐大驼峰命名(首字母大写、无下划线)

实战案例:定义一个学生类

# 定义类(模板)class Student:  # 类属性(公共属性,所有实例共享)  school = "Python编程学院"  # 自定义方法  def study(self):    print("学生正在学习Python")
# 创建实例(具体对象)stu1 = Student()
# 调用属性print(stu1.school)
# 调用方法stu1.study()

self详解self代表当前实例本身,固定写法,所有类内方法第一个参数必须是self


三、构造方法 __init__(最核心、最高频)

__init__ 是类的构造方法,创建实例时自动触发执行,专门用来初始化实例属性。

不用每次创建对象后手动赋值,一步初始化所有属性。

实战:初始化学生姓名、年龄、分数

 

class Student:  # 构造方法:初始化实例属性  def __init__(self, name, age, score):    self.name = name  # 实例属性    self.age = age    self.score = score
  # 自定义方法  def show_info(self):    print(f"姓名:{self.name},年龄:{self.age},分数:{self.score}")
# 创建实例并传参初始化stu1 = Student("小明", 20, 90)stu2 = Student("小红", 18, 95)
# 调用方法stu1.show_info()stu2.show_info()

重点区分

类属性:全局共享,所有实例通用

实例属性:每个对象独有,互不干扰


四、OOP三大核心特性(必考、项目必用)

面向对象三大精髓:封装、继承、多态

1、封装:隐藏细节、暴露接口

将属性和方法封装到类内部,隐藏内部复杂逻辑,只对外提供简单调用方式,提高代码安全性。

Python通过单下划线、双下划线实现私有属性:

_变量:受保护属性,外部不建议直接访问

__变量:私有属性,外部无法直接访问

封装实战

class User:  def __init__(self, name, pwd):    self.name = name    self.__pwd = pwd  # 私有属性,密码隐藏
  # 提供公开方法获取私有数据  def check_pwd(self, input_pwd):    return input_pwd == self.__pwd
    user = User("admin", "123456")print(user.check_pwd("123456"))# print(user.__pwd)  # 直接报错,无法访问私有属性

2、继承:代码复用、减少冗余

子类可以继承父类的所有属性和方法,无需重复编写代码,支持单继承、多继承

语法class 子类名(父类名)

继承实战

 

# 父类class Person:  def __init__(self, name, age):    self.name = name    self.age = age
  def introduce(self):    print(f"我是{self.name},今年{self.age}")
# 子类继承父类class Student(Person):  pass
stu = Student("小张", 21)stu.introduce()  # 直接复用父类方法

3、多态:不同子类,同一方法不同表现

父类定义统一接口,子类重写方法,不同子类调用同一方法,呈现不同效果,适配多场景拓展。

多态实战

class Animal:  def sound(self):    pass
class Dog(Animal):  def sound(self):    print("汪汪汪")
class Cat(Animal):  def sound(self):    print("喵喵喵")
# 同一方法,不同表现Dog().sound()Cat().sound()


五、方法重写与super() 调用父类方法

子类可以重写父类原有方法,覆盖旧逻辑;同时可用 super() 保留父类逻辑并拓展新功能。

实战拓展

class Person:  def __init__(self, name):    self.name = name
  def info(self):    print(f"姓名:{self.name}")
class Student(Person):  def __init__(self, name, score):    super().__init__(name)  # 调用父类构造方法    self.score = score
  # 重写父类方法  def info(self):    super().info()  # 保留父类输出    print(f"分数:{self.score}")
stu = Student("小李", 88)stu.info()

六、高频魔术方法(内置双下划线方法)

魔术方法是Python内置的特殊方法,无需手动调用,特定场景自动触发,极大优化类的使用体验。

1__str__ 打印对象自定义内容

不写__str__,打印对象只会输出内存地址,非常不友好。

class Student:  def __init__(self, name):    self.name = name
  def __str__(self):    return f"学生对象:{self.name}"
print(Student("小王"))

2__del__ 对象销毁方法

对象被删除、程序结束时自动触发,适合释放资源、关闭链接。

3__len__ 支持len()获取对象长度

4__getitem__ 支持下标取值

七、新手高频踩坑总结

1、忘记self参数

类内所有自定义方法,第一个参数必须是self,省略直接报错。

2、混淆类属性与实例属性

公共数据放类属性,独有数据放实例属性,避免所有实例数据互相污染。

3、私有属性强行访问

双下划线私有属性是语法保护,不要强行绕过访问,通过公开方法操作数据更规范安全。

4、重写方法完全覆盖父类逻辑

需要保留父类功能时,务必使用super()调用父类方法,避免功能缺失。

文末结语

面向对象是Python工程化开发的基石,无论是爬虫、自动化、数据分析、后端开发,全部基于OOP思想构建。

掌握类与实例、封装继承多态、常用魔术方法,你就彻底告别玩具代码,写出规范、可复用、易维护的专业级代码。

以上就是“Python面向对象OOP保姆级教程:类与实例、封装继承多态、魔术方法,从脚本进阶工程化的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。  

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取