我有 python 外壳。Python -V 是 3.3.2
>>>f = open('data.txt', 'r')
>>>dir(f)
[..."it's ok"...]
>>>help(f.seek)
Help on built-in function seek:
seek(...)
为什么我没有得到有关此 BIF 的信息?我的 python shell 正确吗?
我有 python 外壳。Python -V 是 3.3.2
>>>f = open('data.txt', 'r')
>>>dir(f)
[..."it's ok"...]
>>>help(f.seek)
Help on built-in function seek:
seek(...)
为什么我没有得到有关此 BIF 的信息?我的 python shell 正确吗?
I/O 基础结构在 Python 3 中进行了彻底改革,用新的对象层次结构完全替换了旧的 Python 2 文件对象。
当您以文本模式打开文件时,您会得到一个实现io.TextIOBase
接口的对象,该对象包装了一个io.BufferedIOBase
对象,该对象又包装了一些实现io.RawIOBase
接口的东西;前两个上的许多方法只是它们包装的对象上的方法的代理。
io.TextIOBase
和类都io.BufferedIOBase
没有关于这些不同代理方法的文档字符串。
您可以使用以下方法访问原始 I/O 对象f.buffer.raw
并获取有关该.seek
方法的帮助信息:
help(f.buffer.raw.seek)
你也可以证明这是一个错误;可以说,代理方法至少应该有一个文档字符串,说明它们将调用传递给其底层对象,以便您可以找到原始方法。在这种情况下,指向f.buffer
属性的指针会很有帮助。随意在Python 问题跟踪器上解决这个问题。
您想要的文档在这里,在 io.TextIOBase 下。出于某种原因io.TextIOWrapper
,从 中返回的实例open
不会公开其超类中的文档字符串。
这些类是用 C 实现的,因此没有 Python 类能够自动显示和传播文档字符串和签名的奢侈。没有人想要它来为 TextIOWrapper 完全实现它。