class memoryview(buffer):
def tobytes(self):
return self
buf = memoryview('23')
buf.tobytes()
python interpreter给我以下错误
TypeError: Error when calling the metaclass bases
type 'buffer' is not an acceptable base type
为什么会如此
答案 0 :(得分:1)
请参阅评论中链接的问题,以了解拒绝这一点的可能原因列表。
直接的技术原因与如何用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
继承。