Я все еще относительно новичок в Python, 1-2 года в одиночном обучении, и я пытаюсь улучшить свою структуру кода, поэтому я реорганизую некоторые старые программы, которые я написал.В одной программе я определил пару методов для записи файлов.Первый использует «write» для сброса огромного http-ответа.Второй использует «линии писем» для выгрузки различных производных списков, например списков ссылок или форм или других извлеченных данных.
Первоначально я учел название файла:
@property
def baseFilename(self):
unacceptable = re.compile(r'\W+')
fname = re.sub(unacceptable,'-',self.myUrl)
t = datetime.datetime.now()
dstring = "%s%s%s%s%s%s" % (t.year, t.month, t.day, t.hour, t.minute, t.second)
fullname = fname + '_' + dstring + '.html'
return fullname
Но у меня большой избыточный блок кода в каждом методе записи:
def writeFile(self, someHtml, writeMethod=write, prefix="RESPONSE_"):
'''The calling functions will supply only the data to be written and
static prefixes, e.g. "full_" for the entire http-response.
'''
fullpath = self.myDump + prefix + self.baseFilename
with open(fullpath, 'w') as h:
h.write(someHtml)
h.close()
print "saved %s" % fullpath
return fullpath
def writeList(self, someList, prefix="mechList_"):
'''Like write file but for one of the many lists outputted.
How do I refactor this, since redundant?
'''
fullpath = self.myDump + prefix + self.baseFilename
with open(fullpath, 'w') as h:
h.writelines(someList)
h.close()
print "saved %s" % fullpath
return fullpath
Я хотел бы иметь возможность добавить переменную для каждой функции, которая определяет метод записи для использования, например (writeMethod = writelines).Я подумал о том, чтобы просто передать строку и использовать одну из функций черной магии - наверное, exec () - но это не может быть правдой, поскольку никто, кажется, никогда не использует эти функции.Весь этот пример может быть довольно глупым, так как я мог бы просто обойти его, но я решил, что мне было бы полезно знать, как передавать эти виды методов экземпляра (это правильный термин?).Это связано с привязкой и отменой?Все, что мне нужно для хорошего ответа, - это синтаксис, необходимый для передачи 'write', 'writelines' и т. Д. Может быть простым, например: writeMethod = insert_your_syntax_here.Хотелось бы дополнительное объяснение или руководство, хотя.Спасибо.