您需要在上调用上下文管理器
self
因为
__init__
class MyFileIO2(io.FileIO):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
with self:
pass
def __enter__(self, *args, **kwargs):
f = super().__enter__(*args, **kwargs)
print('First byte of file: ', f.read(1))
return f
为了进行测试,我创建了一个二进制文件,其内容为“helloworld”。
_ = MyFileIO2(path, 'rb')
# First byte of file: b'h'
super().__init__
正在通过上下文管理器传递,因此您实际上有:
with None:
pass
AttributeError: __enter__
上下文管理器尝试调用
__enter__
关于
NoneType
对象,但该操作无效。