我继承自 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__
成员函数。所以我的问题是我该如何解决这个问题?
编辑:
我不想简化二进制操作,我想操作整数的位。例如
a = Bitset(0)
a[0]
>>>0
a[0] = 1
a[0]
>>>1
但是我不想重新实现每个整数运算,它应该仍然可以工作。如果我包装一个内部整数,我必须这样做。例如
a = Bitset(0)
a += 1
应该仍然有效。