5

bytearray バッファに書き込み、メソッドを呼び出してクリアできるようにしたいので、次のようなクラスがあります。

import struct

class binary_buffer(bytearray):
    def __init__(self, message=""):
        self = message
    def write_ubyte(self, ubyte):
        self += struct.pack("=B", ubyte)
        return len(self)
    def clear(self):
        self = ""

ただし、 clear() を呼び出しても、まったく何もしないようです。サンプル出力は次のようになります。

>>> bb = binary_buffer('')
>>> bb
bytearray(b'')  # As expected, the bytearray is empty
>>> bb.write_ubyte(255)
1  # Great, we just wrote a unsigned byte!
>>> bb
bytearray(b'\xff') # Looking good. We have our unsigned byte in the bytearray.
>>> bb.clear() # Lets start a new life!
>>> bb
bytearray(b'\xff') # Um... I though I just cleared out the trash?
4

1 に答える 1

1

交換

    self = ""

    self[:] = ""

selfそれ以外の場合は、参照を再バインドするだけです。

同様に、次の場合は期待どおりに動作しません。

    self = message
于 2013-02-02T19:30:51.470 に答える