如何对类调用write()?

2024-04-26 12:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组python类,它们表示网络数据结构(也用于磁盘存储)。我希望能够调用类上的write(),并获得它的标准二进制表示。你知道吗

课程可以结构包通过pack()方法将它们转换为二进制表示。我可以覆盖__bytes__方法来调用self.pack(),这样write(bytes(myobject))可以工作,但不能写入(myobject):

TypeError: a bytes-like object is required, not 'MyClassName'

有什么我可以重写的,使write()在没有显式bytes()转换的情况下工作吗?可能我的类必须是字节的子类,但是。。。我想我还是要挂接pack()方法调用吧?你知道吗


Tags: 方法self网络数据结构标准bytes二进制结构
1条回答
网友
1楼 · 发布于 2024-04-26 12:34:34

可以使类成为bytearray的子类,并使任何可以更改对象值的方法通过__setitem__方法(即使用方括号)更新bytearray的值:

class MyClassName(bytearray):
    def update(self):
        ''' a method that makes certain alterations to the object's value '''
        self[:] = self.pack()

相关问题 更多 >