当前位置: 首页 > 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 ,因为命名元组是元祖的子类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/234010.html

相关文章:

  • 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 命令这两个有什么不一样?
  • 算法:前缀和
  • C++中`printf`格式化输出的实用案例和说明
  • Cad 反应器 cad c#二次开发
  • 05【Linux经典命令】Linux 用户管理全面指南:从基础到高级操作
  • Python Day42 学习(日志Day9复习)
  • Windows11:解决近期更新后无法上网的问题
  • 【连接器专题】案例:FPC焊接金手指顶层和底层开窗/焊盘为什么要错位?
  • 如何排查和解决PHP连接数据库MYSQL失败写锁的问题
  • ​AI大模型与法律:智能时代下的司法技术挑战
  • 基于机器学习的水量智能调度研究
  • 基于SpringBoot的房屋租赁系统的设计与实现(thymeleaf+MySQL)