[python] __setitem__与__getitem__的使用

ops/2024/10/19 9:36:31/

我们在使用 numpy 的时候, 经常切片操作, 怎么实现的呢:

python">t = np.array([1, 2, 3, 4, 5])
print(t[1:2], type(t[1:2]), type(t))

我们可以很容易在python 官网上查到这是使用了 __setitem__,__getitem__ 内置函数.
除了内置函数, 还需要做点操作. 下面是我写的一个二进制操作类的雏形, 供大家参考:

python">import math
class A():def __init__(self, value=1):if isinstance(value, int):self.vals = [value]else:self.vals = valueself.it_s = None self.it_e = None def __add__(self, other):return self.vals[0] + otherdef __sub__(self, other):return self.vals[0] - otherdef __setitem__(self, key, value):self.vals[0] = (self.vals[0] & ((~((1 << (key.stop-key.start))-1))<<key.start)) \| ((((1 << (key.stop-key.start))-1)&value)<<key.start)def __getitem__(self, key):k = A(self.vals)k.it_s = key.startk.it_e = key.stopreturn kdef __str__(self):s = 0 if self.it_s is None else self.it_se = math.ceil(math.log2(self.vals[0])) if self.it_e is None else self.it_e return str((self.vals[0] & ((1 << e) - 1))>> s) 

测试调用方法:

python">a = A(100)
a[1:2] = 3
print(f'a[1:2] ={a} {a[1:3]} {type(a[1:3])}')

输出:

$ python test/t_slice.py 
a[103 3 <class '__main__.A'>

有点其他事情要外出, 没来得及验证, 我也是分享一下思路, 有问题评论区指出.


http://www.ppmy.cn/ops/10422.html

相关文章

无人驾驶 自动驾驶汽车 环境感知 精准定位 决策与规划 控制与执行 高精地图与车联网V2X 深度神经网络学习 深度强化学习 Apollo

无人驾驶 百度apollo课程 1-5 百度apollo课程 6-8 七月在线 无人驾驶系列知识入门到提高 当今,自动驾驶技术已经成为整个汽车产业的最新发展方向。应用自动驾驶技术可以全面提升汽车驾驶的安全性、舒适性,满足更高层次的市场需求等。自动驾驶技术得益于人工智能技术的应用…

react 遇到的问题1 ——( 数据更新视图没更新)已解决

问题&#xff1a; 使用react开发项目时&#xff0c;使用useState 定义数据&#xff0c;通过定义的set方法修改数据&#xff0c;视图没有更新 原因&#xff1a; 在 React 中使用 useState 定义数据时&#xff0c;useState 返回一个数组&#xff0c;包含当前状态和更新的函数。…

【QT进阶】Qt http编程之nlohmann json库使用的简单介绍

往期回顾 【QT进阶】Qt http编程之http相关类的简单介绍-CSDN博客 【QT进阶】Qt http编程之用户登录注册功能实现-CSDN博客 【QT进阶】Qt http编程之json解析的简单介绍-CSDN博客 【QT进阶】Qt http编程之nlohmann json库使用的简单介绍 一、nlohman json库 1、C常用Json库 J…

如何用idm下载迅雷文件 idm怎么安装到浏览器 idm怎么设置中文

如果不是vip用户使用迅雷下载数据文件&#xff0c;其下载速度是很慢的&#xff0c;有的时候还会被限速&#xff0c;所以很多小伙们就开始使用idm下载迅雷文件&#xff0c;idm这款软件最大的优势就是下载速度快&#xff0c;还有就是具备网页捕获功能&#xff0c;能够下载网页上的…

苍穹外卖day7 缓存商品(redis/Spring Cache)、用户端购物车功能

文章目录 前言一、缓存菜品1. 问题说明2. 解决办法3. 代码开发 二、缓存套餐1. Spring Cache2. 实现思路 三、购物车管理1. 添加购物车1.1 产品原型1.2 接口设计1.3 数据库设计1.4 代码开发 2. 查看购物车2.1 接口设计2.2 代码开发 3. 清空购物车3.1 接口设计3.2 代码开发 4. 删…

网站推广爬虫

网站推广爬虫是一种用于帮助网站推广的工具。它可以自动地收集和分析网站相关的数据&#xff0c;以便进行市场调研、竞争分析和优化策略等工作。以下是网站推广爬的一些常见功能和特点&#xff1a; .数据收集&#xff1a;网站推广爬虫可以通过抓取网页内容、提取关键信息和分析…

【css】select实现placeholder效果

场景&#xff1a;使用select下拉选择框的时候&#xff0c;需要像其他控件一样提示默认信息。 问题&#xff1a;表单控件select没有placeholder属性。 解决方案&#xff1a;通过css实现&#xff0c;不需要js <style>select > option[disabled]{ color:#999;cursor: n…

【前端】4. CSS综合案例

1. 模拟新闻界面 <!-- 1.模拟实现新闻界面 --><!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…