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

22.元类、静态鸭子类型、抽象基类

目录

1. 元类

 1.1 当函数用:查看类型

1.2 当类用:动态造类(3 参数形式)

1.3 继承 type:写自己的元类

2. 用“鸭子类”进行类型推导

2.1 什么是鸭子类(Duck Class)?

2.2 最小例子:写下“鸭子长什么样”

2.3 带属性协议的鸭子(更真实)

2.4 运行时类型检查(可选)

2.5 与 ABC 对比(一张表)

3. 抽象基类

3.1 内置抽象基类

3.2 从抽象基类中派生

3.3 实现自定义抽象基类

3.4 Protocol + ABC 混用(静态鸭子 + 继承)

4. 总结


1. 元类

什么是元类,一句话:元类是 “类的类”,控制 “类对象” 的诞生过程,也是大型框架(Django、SQLAlchemy)保持简洁的底层支柱。

从“对象→类→元类”链条说起
实例 obj ──诞生于──→ 类 MyClass ──诞生于──→ 元类 MyMeta

  • 类本身就是对象(类型为 type 或其子类)

  • 默认元类 = type;你可以 自定义元类 来干预“造类”过程。

1. 用类型(type)创造类

type 在 Python 里同时扮演两种角色:

  1. 内置函数:告诉你“对象是谁生的”

  2. 元类鼻祖:所有类的默认“生产线”,你可以继承它自己造元类。

http://www.dtcms.com/a/393622.html

相关文章:

  • 【论文速递】2025年第21周(May-18-24)(Robotics/Embodied AI/LLM)
  • Android 自定义电池组件(BatteryView)
  • 基于 Stripe/Metering 的用量计费:从 SLO 指标到账单流水
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘fastapi’ 问题
  • 论文阅读——隧道中毫米波MIMO信道特性的实验研究
  • The Library: 1靶场渗透
  • 23种设计模式之【装饰器模式】-核心原理与 Java实践
  • 动态规划中的背包问题:0/1 背包与完全背包的核心解析
  • PHP应用-组件框架前端模版渲染三方插件富文本编辑器CVE审计(2024小迪安全DAY30笔记)
  • uniapp 如何判断发的请求是网络异常uni.request
  • 学习:uniapp全栈微信小程序vue3后台 (25)
  • 23种设计模式之【原型模式】-核心原理与 Java实践
  • Netty 重放解码器ReplayingDecoder揭秘:重写轻量异常机制 和 ConstantPool
  • getgeo 生物信息 R语言 表型信息表”“样本信息表”或“临床信息表 phenodata phenotype data
  • OceanBase备租户创建(二):通过BACKUP DATABASE PLUS ARCHIVELOG
  • Linux文件打包压缩与软件安装管理完全指南
  • KingbaseES数据备份操作详解(图文教程)
  • 中断屏蔽实现方法-ARM内核
  • Kotlin 协程之 SharedFlow 与 StateFlow 深度解析
  • python爬虫(请求+解析+案例)
  • 111-Christopher-Dall_Arm-Timers-and-Fire:Arm架构计时器与半虚拟化时间
  • switch缺少break出现bug
  • 【自然语言处理】(3) --RNN循环神经网络
  • C# 中的 ReferenceEquals 方法
  • BERT:用于语言理解的深度双向Transformer预训练【简单分析】
  • 力扣hot100:两数相加(模拟竖式加法详解)(2)
  • Zotero + Word 插件管理参考文献的引用
  • 用Python一键整理文件:自动分类DOCX与PDF,告别文件夹杂乱
  • Ubuntu部署Elasticsearch教程
  • 61.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--提取金额