ビット演算用の単純なインターフェイスを実装したかったので、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)))
|=
メンバー関数の 1 つでand関数を使用したいのです&=
が、整数には__ior__
and__iand__
メンバー関数がありません。だから私の質問は、どうすればこの問題を解決できますか?.
編集:
二項演算を単純化したくありません。整数のビットを操作したいと思います。例えば
a = Bitset(0)
a[0]
>>>0
a[0] = 1
a[0]
>>>1
しかし、すべての整数演算を再実装したくはありませんでした。これも同様に機能するはずです。内部整数をラップする場合は、それを行う必要があります。例えば
a = Bitset(0)
a += 1
まだ動作するはずです。