继承和扩展Python字节数组

5 投票
1 回答
2012 浏览
提问于 2025-04-17 14:33

我想要能够写入一个字节数组缓冲区,并通过调用一个方法来清空它,所以我创建了一个这样的类:

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?

1 个回答

1

    self = ""

替换成

    self[:] = ""

否则你只是重新绑定了 self 的引用。

同样,下面的代码也不会按你想的那样工作:

    self = message

撰写回答