我希望有一个在初始化过程中传递字符串或已打开文件的类.如果它得到一个字符串,就会打开文件.
from typing import IO
class Parser:
def __init__(self, fin: str|IO[str]) -> None:
if isinstance(fin, str):
self.fin = open(fin, 'r')
else:
if not fin.readable():
raise ValueError("Input file must be readable.")
else:
self.fin = fin
我的问题是,如果文件被打开,关闭它的正确方法是什么.我原以为可以用__del__
法来解决这个问题,但读了之后,大家似乎一致认为使用__del__
不是一个好主意.有没有更好的方法?