我有python shell。 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正确吗?
答案 0 :(得分:3)
I / O基础架构在Python 3中进行了大修,完全用new object hierarchy替换旧的Python 2文件对象。
当您在文本模式下打开文件时,您将获得一个实现io.TextIOBase
接口的对象,该对象包装io.BufferedIOBase
对象,该对象又包含实现io.RawIOBase
接口的内容;前两者的许多方法只是它们包装对象上方法的代理。
io.TextIOBase
和io.BufferedIOBase
类都没有关于这些代理方法的文档字符串。
您可以使用f.buffer.raw
覆盖原始I / O对象,并获取有关.seek
方法的帮助信息:
help(f.buffer.raw.seek)
您还可以证明这是一个错误;可以说代理方法至少应该有一个文档字符串,表明它们将调用传递给它们的底层对象,这样你就可以找到原始方法。在这种情况下,指向f.buffer
属性的指针会很有帮助。请随意在Python issue tracker处完成此案。
答案 1 :(得分:0)
您想要的文档is here, under io.TextIOBase。出于某种原因io.TextIOWrapper
,其实例从open
返回,不会从其超类中公开文档字符串。
这些类是用C实现的,因此不具备自动显示和传播文档字符串和签名的Python类所带来的奢侈。很可能没有人想要这足以完全实现TextIOWrapper。