继承int的类中的位运算

2023-12-08

我继承了 int ,因为我想实现一个简单的按位运算接口。由于 int 的不可变性,我必须使用整数成员函数,例如int.__and__, ... .

class Bitset(int)
    ...
    def __setitem__(self, index, value):
        if value:
            self.__ior__(1 << int(index))
        else:
            self.__iand__(~(1 << int(index)))

在我的一个成员函数中,我想使用|= and &=函数,但整数没有__ior__ and __iand__成员函数。所以我的问题是如何解决这个问题?

Edit:

我不想简化二进制运算,我想操作整数的位。例如。

a = Bitset(0)
a[0]
>>>0
a[0] = 1
a[0]
>>>1

但我不想重新实现每个整数运算,它应该仍然有效。如果我包装一个内部整数,我就必须这样做。例如

a = Bitset(0)
a += 1

应该仍然有效。


ints 不可下标且不可变,因此您无法编写有效的__setindex__()方法。看起来描述的基本上是一个可变的位向量类,例如this one这似乎是由 Guido 写的。您可以使用提供的__int__() and __long__()将其转换为整数值的方法(尽管我认为您不再需要后者)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

继承int的类中的位运算 的相关文章

随机推荐

  • 编写C#插件系统

    我正在尝试编写一个插件系统 为我的应用程序提供一些可扩展性 以便有人可以为该应用程序编写插件 而无需触及主应用程序的代码 并有破坏某些内容的风险 我已经编写了基本的 IPlugin 接口 atm 尚未实现任何内容 这是我的加载方式 publ
  • 如何在上传文件时添加进度条

    我正在将文件传输到网址 我可以成功完成 但我不知道如何获取已上传文件的进度 我需要获取某些数字的进度 fileTransfer upload file path api endpoint options data then data gt
  • 捕获没有文本框的键盘输入

    我有一个应用程序 可以从健康卡中读取数据并解析它们以获取出生日期 健康卡 和姓名等基本信息 现在 我有一个文本框 可以从刷卡器中获取输入 效果很好 但我觉得可能有更好的方法 我希望在应用程序的后台有一个键盘侦听器 它可以捕获刷卡器的输入并解
  • Crystal Reports - 计数公式

    我正在 Crystal 中开发一份报告 我需要对具有几种不同状态的特定字段进行计数 例如 我的报告中有一个 StatusType 字段 其中包含的值是 In Process Rejected On Hold or Submitted 我希望
  • 如何检查是否给出了参数?

    Checks if an argument was specified if argv 1 strcpy Buff1 argv 1 else strcpy Buff1 default 如果我运行 program test 增益1 测试 如果
  • Epson epos sdk收据对齐问题

    我目前正在使用适用于 Android 的 epson ePOS SDK 我需要打印收据 菜单名称在同一行中左对齐 价格右对齐 但它无法正常工作 我的临时解决方案是添加一些提要行以使其价格正确对齐 是否可以使文本在同一行中左右对齐 以下附件
  • RecyclerView 中的 Admob 原生广告 [重复]

    这个问题在这里已经有答案了 我想在我的一个具有 recyclerview 的报价应用程序中实施 admob 原生广告 我正在学习 android 编程 并试图找到原生广告的教程 但没有任何好的教程可用于在 recyclerview 中实现原
  • Swift 无法通过委托调用协议方法

    我有两节课 一个类被命名为ViewController另一个类名为TabView 我的目标是调用一个函数changeTab 它位于 ViewController 的 TabView 类内部 不知怎的 我遇到了麻烦 因为每次我的代表nil 这
  • 在传递给 mysql_query 之前有效地转义 C 中的引号

    简而言之 我通常使用 sprintf 在 C 中构建 MySQL 查询 i e sprintf sqlcmd update foo set dog lab where description s some desc mysql query
  • 在 Vim 中缩进 Javascript - 函数中 Lambda 函数的问题

    我在 vim 中遇到 JavaScript 缩进问题 一切都很好 除了内联函数作为函数参数的缩进不起作用 这是一个只有 javascript 的问题 不涉及 html Example someFunc function if foo bar
  • Base64 编码 .Rda 文件

    All 我正在尝试弄清楚如何将 Rda 文件放入 Base64 编码中 以便将其传送到 API 或从 API 传送出来 我真的很苦恼如何做到这一点 这是我得到的 但我认为它偏离了目标 cuse lt read table http data
  • 设置TKinter标签的位置?

    我正在尝试制作一个程序 在窗口的左下角和右下角放置一个标签 我的代码如下 root Tk root geometry 1000x250 var StringVar label Label root textvariable var var
  • 使用 karate.forEach 和 karate.set 从 json 数组中提取值的索引

    我有以下 json id 1A 2B name rs mk 我想提取名称为 rs 或 mk 时的id值 不会出现重复的情况name值和大小id and name键将始终匹配 所以我创建了以下场景 我迭代了name使用 forEach 的数组
  • 解析 ruby​​ 中的字符串日期,例如“28-May-10”

    我尝试使用解析 Date parse 28 May 10 to s Returns 0010 5 28 距离现在还有 2000 年 我怎样才能让 ruby 正确解释两位数年份 谷歌上有很多字符串到日期的转换技巧 但大多数处理数字月份而不是
  • SerialPort 类和 DataReceived 事件...获取字节。使用 ReadLine 还是 ReadExisting?有什么例子吗?

    我想通过串行发送和接收字节 我的接收器应该异步获取字节 我写了下面的小例子 看起来可行 但它给我留下了一种不安的感觉 我真的应该使用 WriteLine ReadLine 吗 正如现在所写 是否有可能为每个字节调用事件处理程序 m port
  • cmake - 未定义的引用

    我是新来的cmake并且知道这个问题之前已经被问过 但仍然找不到我做错了什么 我有一个带有文件夹的外部库 include and lib The include文件夹包含所有标题 h 和 lib文件夹包含所有源 c files 在我的项目中
  • 错误:参数类型 double/string 等不符合预期类型“AnyObject”

    我看了一些 iOS 编程教程 并对 AnyObject 有疑问 桥接不起作用 我有以下代码 import Foundation class CalculatorBrain private var accumulator 0 0 var in
  • 在 64 位进程中加载​​ 32 位 dll [重复]

    这个问题在这里已经有答案了 我希望我的 C 应用程序有条件地运行本机方法 有条件地选择运行 dll 的 x86 或 x64 版本 每当我尝试加载 32 位 dll 时 都会收到以下错误 Unhandled Exception System
  • 将 mat 文件转换为 pandas 数据框

    我想转换这个文件到 pandas 数据框 import pandas as pd import scipy io mat scipy io loadmat cardio mat cardio df pd DataFrame mat 我收到此
  • 继承int的类中的位运算

    我继承了 int 因为我想实现一个简单的按位运算接口 由于 int 的不可变性 我必须使用整数成员函数 例如int and class Bitset int def setitem self index value if value sel