我有一个对象(比如FileProxy
)看起来像一个文件,但做了一些额外的工作。它初始化为foo = FileProxy("/some/file.txt")
,我可以像这样使用它
foo.open()
foo.write("something")
foo.close()
我希望将此工作作为上下文管理器。问题是我是否应该让它像这样工作,其中上下文管理器不仅仅创建对象,而且在退出时实际调用.open
方法和.close
。
with FileProxy("/some/file.txt") as f:
f.write("something")
或者我应该做点什么
with FileProxy("/some/file.txt").open() as f:
f.write("something")
与非上下文管理器API更加对称。
我更喜欢前者,但它看起来与Python中常规文件的工作方式不同,我想知道是否有一些我在这里实现的反模式。