因此,出于各种原因,我有一个使用多个子文件写入和读取的类。我想知道在__init__
中初始化对象属性的正确方法是什么。由于文件只是作为字符串文件的路径,我选择将它们初始化为self.file = 'file'
。由于某种原因,这对我来说非常肮脏,我确信这违反了某种惯例。我猜测self.metafile = None
可能是一个受欢迎的惯例,但实际上并不确定。
一个简单的例子(只有两个对象属性文件,在某些情况下我会使用5-6个对象属性文件)。 (我意识到在这种情况下,将它们用作对象属性并不是绝对必要的,但我发现它确实帮助我完成了我正在做的实际工作,而且我是这里主要是关于如何初始化文件的语义。)
class FileHandler(object):
def __init__(self, source, meta):
self.source_folder = source
self.meta_folder = meta
self.metafile = 'file'
self.output = 'file'
def read_meta(self):
meta = glob.glob(self.meta_folder+ '*.csv')
for m in meta:
self.metafile = m
self.read_data()
def read_data(self):
source = glob.glob(self.source_folder + '*.csv')
for src in source:
current_file = src.strip('.csv')
if current_file == self.metafile.strip('_meta.csv')
self.output = current_file + '_output.csv'
self.combine_meta()
def combine_meta(self):
# reads the source data, combines it with metadata and writes out
# a neat csv file (to self.output) that can be imported into a database
答案 0 :(得分:1)
是的,通常我会在构造函数中将metafile
和output
设置为None
。
class FileHandler(object):
def __init__(self, source, meta):
self.source_folder = source
self.meta_folder = meta
self.metafile = None
self.output = None
....
它允许您测试相应的文件是否已初始化,只需检查它是否为Truth。例如:
if self.metafile:
....