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 继承。
