python - 继承int的类中的位运算

标签 python int bitwise-operators

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

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

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

编辑:

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

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

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

a = Bitset(0)
a += 1

应该仍然有效。

最佳答案

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

关于python - 继承int的类中的位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11825380/

相关文章:

python - 使用 Scikit-learn 中的 Column Transformer 时如何找出 StandardScaling 参数 .mean_ 和 .scale_?

php - 在 MySQL 中使用 "signed"INT?

java - int不能转boolean??将代码从 C 转换为 Java

c - 16 位非负数的右旋?

python - 我有 lxml 但仍然要求我安装它

python - 我可以更改动画中注释的 arrowprops(属性)吗?

ios - 如何在 Swift 中创建一个十六进制颜色字符串 UIColor 初始值设定项?

javascript - 如何在 JavaScript 数组上使用模和按位 XOR 运算符反转算法?

c - C 中的无符号整数打印不正确

python - 在嵌套 Python 字典中搜索键