谁能解释清楚Python中Buffer类和bytes以及bytearray之间的关系呀,如果是父子类关系又看不到继承关系,如果不是父子类关系,为什么声明参数类型为Buffer,却可以传入bytes对象的?
最近被Python的类型机制困扰了,指定方法参数类型为Buffer,却可以传入bytes对象,然而看代码他们之间好像又并没有父子关系,看了官网有关Buffer Protocol的说明,还是不明白这种差异在那里。以socket为例
import socket
client = socket.socket()
client.connect(("127.0.0.1", 8080))
# bytes对象
msg = bytes("hello world", "utf-8")
# send方法的参数声明为Buffer类型
client.send(msg)
可以看到这里send方法的参数其实是Buffer类型,传入的bytes对象是可以正常解析的
def send(self, __data: ReadableBuffer, __flags: int = ...) -> int: ...
而在bytes类中确实又看不到他们之间有父子类关系,希望有大佬能解答一下
Where did you find it ?
On link docs.python.org/zh-cn/3/library/so..., it say