我继承了 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
应该仍然有效。
int
s 不可下标且不可变,因此您无法编写有效的__setindex__()
方法。看起来描述的基本上是一个可变的位向量类,例如this one这似乎是由 Guido 写的。您可以使用提供的__int__()
and __long__()
将其转换为整数值的方法(尽管我认为您不再需要后者)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)