Python面向对象-面向对象基础
2025-8-31
| 2025-9-5
Words 2463Read Time 7 min
type
status
date
slug
summary
tags
category
icon
password

📝 什么是对象和类

类(class): 一种“蓝图”或“模具”,描述一类事物的共有属性(数据)与行为(函数)。
对象(object): 根据类“生产”出来的具体实例(instance),拥有独立的属性值,但共享类中定义的方法。
Python 面向对象编程(OOP)是一种把“数据(属性)”和“操作数据的代码(方法)”封装在一起,进而组织程序的范式。核心概念是“对象”:对象由类(class)生成,类相当于模板,对象相当于实例。

📝 Python 类

1、类定义语法

1.1、最小可运行语法:

关键字 class,后跟类名(PascalCase 约定)。
冒号 + 缩进块(通常 4 空格)。
即使什么都不放,也要写 pass,否则 SyntaxError

1.2、包含属性、方法:

📝 三、类对象

1、相关概念

类对象(class object):由 class 语句执行后,Python 在内存中创建的对象,类型是 type(元类)。
实例对象(instance object):由“类对象”调用得到的具体个体,类型就是该“类对象”。

2、属性引用

2.1、属性引用语法

Python 中使用点号 . 运算符进行属性引用:

2.2、属性查找顺序

当通过实例访问属性时,Python 按照以下顺序查找:
  1. 实例命名空间 - 首先检查实例自身的 __dict__
  1. 类命名空间 - 然后在实例的类中查找
  1. 基类命名空间 - 最后按照方法解析顺序(MRO)在基类中查找
当通过类访问属性时,查找顺序更简单:
  • 类命名空间 - 在当前类中查找
  • 基类命名空间 - 按照 MRO 在基类中查找

3、实例化

实例化其实就是调用类对象,从而创建一个实例对象

📝 实例对象

1、相关概念

通过类实例化操作生成对象就是实例对象
一个类可以多次实例化,生成多个实例对象

2、常说的面向对象编程是什么

  1. 设计类
  1. 创建类实例对象
  1. 实例对象调用方法

3、创建实例对象详解

  1. 在内存中为对象分配空间
  1. 调用初始化方法 __init__ 为对象初始化
  1. 对象创建后,内存中就有一个类的实例对象了
由此可见,一个类可以有很多个对象,每个对象都有属于自己的属性、方法;
  • 创建出来的 对象 叫做 类的 实例对象
  • 创建对象的 行为 叫做 实例化
  • 对象的属性 叫做 实例属性
  • 对象调用的方法 叫做 实例方法

📝 __init__ 初始化方法

1、相关概念

身份:实例的“初始化器”(initializer)。
作用:在对象已创建但尚未可用时,给对象填充属性、完成额外设置。
__new__ 的关系:
  • __new__ 负责“生壳”→ 返回实例;
  • __init__ 负责“装修”→ 给实例贴标签、装属性。

2、语法格式

  • 方法名固定为 __init__
  • 第一参数必须是 self(名字可改但别改)。
  • 不能有返回值,或必须返回 None
  • 支持所有普通函数能用的形参形式:位置、默认、可变、关键字、类型注解。
💡
self 不是关键字,而是约定俗成的形参名,代表“当前对象本身的引用”。
  1. 定义时必须写在第一个位置;调用时自动传入,不需要手动给。
  1. 在方法内部,所有实例属性都要通过 self.属性名 访问/修改。
  1. 同一个类创建的不同对象,self 指向各自的内存空间,因此数据互不干扰。

3、调用流程(用户只写 1 行,Python 做 3 步)

  1. 遇到 obj = 类名(args)
  1. 解释器内部:
      • 先执行 类名.__new__(类名, *args) → 得到裸实例。
      • 若裸实例是该类实例 → 自动调用 裸实例.__init__(*args)
  1. 返回已初始化好的对象。

4、最小可运行示例

5、常见用法扩展

  • 带验证
    • 调用父类
      • dataclass 场景

        📝 三大特性:封装、继承、多态

        1、总览

        特性
        关键词
        一句话
        Python 典型语法/机制
        封装
        Encapsulation
        把数据和操作打包,对外只暴露必要接口
        私有属性 __x、属性装饰器 @property
        继承
        Inheritance
        子类复用、扩展父类代码
        class Child(Parent):
        多态
        Polymorphism
        同一接口,不同对象表现出不同行为
        鸭子类型 + 重写方法

        2、封装 Encapsulation

        2.1、概念

        隐藏内部细节,对外提供清晰、可控的接口,防止外部直接篡改数据。

        2.2、Python 实现手段

        命名约定:
        • _var 保护变量(提示别乱动)
        • __var 私有变量(触发名称重整 ClassName__
        属性装饰器:将方法伪装成属性,实现读写校验
        只读/只写控制

        2.3、代码示例

        3、继承 Inheritance

        3.1、概念

        子类自动获得父类的属性和方法,并可:
        1. 语法:class 子类(父类1, 父2, ...):
        1. 多继承:括号里可放多个父类,按 MRO 顺序查找方法。
        1. 覆盖/扩展:同名的方法会覆盖父类实现;super() 显式调用父类版本。
        1. 内置函数:issubclass(Child, Parent)isinstance(obj, Parent) 用于类型判断。

        3.2、语法

        3.3、多重继承 & MRO

        3.4、使用 super() 调用父类

        4、多态 Polymorphism

        4.1、概念

        “同一接口,多种形态”。调用方只管“会做什么”,不管“具体是谁”。

        4.2、Python 鸭子类型

        Python 是动态语言,不强制继承体系,只要对象实现了所需方法即可。

        4.3、代码示例

        4.4、基于继承的多态也可

         
      • 开发
      • Python
      • Python函数-模块Python面向对象-面向对象进阶
        Loading...