【发布时间】:2015-11-12 22:47:11
【问题描述】:
我正在使用此答案中的类示例来确保始终清理某些文件:https://stackoverflow.com/a/865272/651779
我想要的是当我打电话时
pacakge_object = PackageResource()
而不是
with PackageResource() as package_obj:
# do stuff
它给出了一个错误,解释这个类只能与with 语句一起使用。有没有办法知道类是否用with PackageResource() as package_obj: 而不是pacakge_object = PackageResource() 初始化?
【问题讨论】:
-
我不认为有,但你为什么要阻止任何人使用
package_object = PackageResource()?只需在文档中说明如何使用它。如果有人选择以不同的方式使用它,他们要么知道自己在做什么,要么是他们的问题,而不是你的问题。 -
班级不知道要分配给什么或如何分配,除非您使用
inspect做一些可怕而脆弱的事情;只需记录它最适合用作上下文管理器,并保留嘲笑无视您、崩溃和燃烧的人的权利! -
您可以查看this article,特别是在将上下文管理器实现为类部分。您可能会在那里找到有用的东西。
-
@Christian 只是告诉您如何制作 CM,OP 已经完成了,而不是如何强制用户以这种方式使用该类。
-
@jonrsharpe 那么,在那个链接中没有任何 OP 可以使用?