__bytes__ 方法在哪里可以找到?

deb*_*ish 6 python python-3.x

官方文档说:

object.__bytes__(self)

被调用bytes以计算对象的字节字符串表示。这应该返回一个bytes对象。

但是当我执行dir(object)or dir(bytes)or 时dir(bytearray),该__bytes__方法不会出现。那么在哪里可以找到呢?

eph*_*ent 3

PEP 428pathlib自 Python 3.4 起)可能是bytes.

路径的字符串表示形式是原始文件系统路径本身(以本机形式,例如 Windows 下带有反斜杠),您可以将其传递给将文件路径作为字符串的任何函数:

>>>
>>> p = PurePath('/etc')
>>> str(p)
'/etc'
Run Code Online (Sandbox Code Playgroud)

类似地,在路径上调用 bytes 会将原始文件系统路径作为 bytes 对象提供,由 os.fsencode() 编码:

>>>
>>> bytes(p)
b'/etc'
Run Code Online (Sandbox Code Playgroud)

这些转换是通过神奇的方法发生pathlib.__str__()pathlib.__bytes__()

  • 我猜想如果为自定义对象定义了“__bytes__”方法,那么“bytes”内置函数将返回该对象的字节表示形式。该方法在任何内置类型中均不可用。 (3认同)