【发布时间】:2015-07-01 09:09:58
【问题描述】:
我的问题主要与您如何在 Python 的类中使用 with 关键字有关。
如果你有一个包含文件对象的类,你如何使用with 语句,如果有的话。
比如我这里不用with:
class CSVLogger:
def __init__(self, rec_queue, filename):
self.rec_queue = rec_queue
## Filename specifications
self.__file_string__ = filename
f = open(self.__file_string__, 'wb')
self.csv_writer = csv.writer(f, newline='', lineterminator='\n', dialect='excel')
如果我再用另一种方法对文件做一些事情,例如:
def write_something(self, msg):
self.csv_writer(msg)
这样合适吗?我应该在某处包含with 吗?我只是担心__init__ 退出,with 退出并可能关闭文件?
【问题讨论】:
-
永远不要给自己的属性或方法两边加上双下划线。这些名称是为 Python 自己的属性设计的,您可以覆盖这些属性,但不能定义您自己的。
标签: python file with-statement