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

python类的高级方法(slots,dataclass,named tuples)

Slots

Slots 是 Python、JavaScript(部分框架)等语言中用于优化类实例的数据结构。通过预定义类的属性(即 “槽位”),它可以:

  • 减少内存消耗:实例不再使用动态字典存储属性,而是使用固定大小的数组。
  • 提高属性访问速度:直接通过索引访问属性,无需哈希查找。

优点

  • 每个实例占用的内存更少(尤其适合创建大量实例时)。
  • 属性访问速度提升约 20-30%。

限制

  • 无法动态添加不在 __slots__ 中的属性。
  • 实例不能使用 __dict__(除非显式包含 __dict__ 在 __slots__ 中)。

Dataclass

# 使用 dataclass 减少类定义的代码量
from dataclasses import dataclass@dataclass
class Person:name: strage: int# 等同于手动编写以下代码(省略了 __init__、__repr__ 等方法)
class Person:def __init__(self, name: str, age: int):self.name = nameself.age = agedef __repr__(self):return f"Person(name={self.name}, age={self.age})"

Named Tuple

from typing import namedtuple
S = namedtuple('Stock',['name', 'shares', 'price'])

保留的元组的特性,如不可变性(immutability),解包(unpacking)和索引访问(indexing) 

并且还有新的特性:支持点号访问和字段名。

如S.name访问

isinstance(s, tuple) 返回 True ,因为命名元组是元祖的子类

相关文章:

  • b2b 网站方案网站模板怎么建站
  • wordpress导航主题模板下载地址班级优化大师下载安装最新版
  • 歙县住房和城乡建设委员会网站友情链接检测工具
  • java做网站开发成本高怎样查询百度收录和排名情况
  • 邢台做网站建设公司哪家好?石家庄关键词优化平台
  • 南京专业做网站公司网络营销总结及体会
  • Postgresql源码(146)二进制文件格式分析
  • 408第一季 - 408内容概述
  • Modbus转Ethernet IP深度解析:磨粉设备效率跃升的底层技术密码
  • 老旧热泵设备智能化改造:Ethernet IP转Modbus的低成本升级路径
  • linux 串口调试命令 stty
  • 两张关联表,INNER JOIN同步公共属性(工作实战)
  • [zynq] Zynq Linux 环境下 AXI BRAM 控制器驱动方法详解(代码示例)
  • 【Linux】Linux基础指令1
  • 最小硬件系统概念及其组成
  • 14.AI搭建preparationのBERT预训练模型进行文本分类
  • Form开发指南-第二弹:基本配置与开发流程
  • MDK程序调试
  • JupyterNotebook全能指南:从入门到精通
  • 6.5本日总结
  • AIGC赋能前端开发
  • 整合swagger,以及Knife4j优化界面
  • ABB 1MRK002247-Apr04保护继电器模块技术分析
  • 灵活控制,modbus tcp转ethernetip的 多功能水处理方案
  • Linux 里 su 和 sudo 命令这两个有什么不一样?
  • 算法:前缀和