如何/何时关闭对象中的文件?

2024-04-18 04:02:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试设计一个类来管理Linux(/dev/video*)中的视频设备。你知道吗

因为我的C++背景,我自然认为我可以在构造函数中打开文件并在析构函数中关闭它。你知道吗

后来我了解到python不能保证何时/是否调用析构函数。你知道吗

然后我想我可以用我自己的“初始化”和“反初始化”方法来管理设备文件的打开/关闭,但是当对象被构造但没有初始化时,以及当对象被反初始化但没有销毁时,它会产生时间间隔,此时对象没有有效的内部状态(方法主要是打开的视频设备上的ioctls)。你知道吗

这意味着我需要在每个方法的开头验证对象状态,比如内置文件对象(f=open()f.close)?或者在已经取消初始化的对象上调用某个方法时让I/O错误发生?你知道吗


Tags: 文件对象方法函数dev视频间隔linux
1条回答
网友
1楼 · 发布于 2024-04-18 04:02:02

继续在构造函数中打开文件,它不会伤害任何东西。你知道吗

Python提供了^{} statement来允许在构建/销毁之外设置和拆卸对象。对象必须包含__enter____exit__方法;在with语句的开头调用__enter__,在with中包含的代码块结束时调用__exit__。值得注意的是__exit__是被调用的,不管该块是运行到完成状态,还是由于异常而提前终止。你知道吗

显然with只在您当时使用对象时才有用,而不是将其作为成员存储在另一个对象中。但是您可以更深入一层,在对象周围使用with,并让它的__exit__函数在您自己的对象上调用cleanup函数。你知道吗

相关问题 更多 >