我有一个noob问题。 我需要做这个类,它在init打开文件和其他函数只是附加到这个打开的文件文本。我怎么能这样做? 需要做这样的事情,但这不起作用,所以帮助。
file1.py
from logsystem import LogginSystem as logsys
file_location='/tmp/test'
file = logsys(file_location)
file.write('some message')
file2.py
class LogginSystem(object):
def __init__(self, file_location):
self.log_file = open(file_location, 'a+')
def write(self, message):
self.log_file.write(message)
由于
答案 0 :(得分:2)
与已提及的 zwer 一样,您可以使用__del__()
方法来实现此行为。
__del__
是Python的等价物,在对象被垃圾回收时被调用。虽然该对象实际上是垃圾回收(这取决于实现),但不保证!
另一种更安全的方法是使用__enter__
和__exit__
方法,这些方法可以通过以下方式实现:
class LogginSystem(object):
def __enter__(self, file_location):
self.log_file = open(file_location, 'a+')
return self
def write(self, message):
self.log_file.write(message)
def __exit__(self):
self.log_file.close()
这允许您使用with
- 语句进行自动清理:
from logsystem import LogginSystem as logsys
file_location='/tmp/test'
with logsys(file_location) as file:
file.write('some message')
您可以阅读有关这些方法的更多信息,以及with
- 语句here