Skip to main content
 首页 » 编程设计

python之我试图从 2.6 中的 'buffer' 类派生但无法这样做

2025年05月04日11jirigala

class memoryview(buffer): 
    def tobytes(self): 
        return self 
 
buf = memoryview('23') 
buf.tobytes() 

python 解释器给我以下错误

TypeError: Error when calling the metaclass bases 
    type 'buffer' is not an acceptable base type 

为什么会这样

请您参考如下方法:

请参阅评论中链接的问题,了解不允许这样做的可能原因列表。

直接的技术原因与如何在 C 中声明 Python 类有关。有趣的部分就在 bufferobject.c 的底部。 :

PyTypeObject PyBuffer_Type = { 
    ... 
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GETCHARBUFFER | Py_TPFLAGS_HAVE_NEWBUFFER, /* tp_flags */ 
    ... 
}; 

此字段 tp_flags 包含一个名为 Py_TPFLAGS_BASETYPE 的潜在设置,此处未使用。如果它是,就像它在,例如,listobject.c , 将允许从 buffer 继承。