Я новичок в Python и задаю вопрос относительно следующего класса:
class Configuration:
def __init__(self):
parser = SafeConfigParser()
try:
if parser.read(CONFIG_FILE) is None:
raise IOError('Cannot open configuration file')
except IOError, error:
sys.exit(error)
else:
self.__parser = parser
self.fileName = CONFIG_FILE
def get_section(self):
p = self.__parser
result = []
for s in p.sections():
result.append('{0}'.format(s))
return result
def get_info(self, config_section):
p = self.__parser
self.section = config_section
self.url = p.get(config_section, 'url')
self.imgexpr = p.get(config_section, 'imgexpr')
self.imgattr1 = p.get(config_section, 'imgattr1')
self.imgattr2 = p.get(config_section, 'imgattr2')
self.destination = p.get(config_section, 'destination')
self.createzip = p.get(config_section, 'createzip')
self.pagesnumber = p.get(config_section, 'pagesnumber')
Можно ли добавить дополнительные переменные экземпляра в другую функцию, get_info
в этом примере, или лучше всего определить все переменные экземпляра в конструкторе? Не может ли это привести к коду спагетти, если я определяю новые переменные экземпляра по всему месту?
EDIT: Я использую этот код с простым скреблем изображений. Через get_section
я возвращаю все разделы в файле конфигурации, а затем перебираю их, чтобы посещать каждый сайт, с которого я очищаю изображения. Для каждой итерации я делаю вызов get_section
, чтобы получить настройки конфигурации для каждого раздела в файле конфигурации.
Если кто-то может придумать другой подход, все будет хорошо! Спасибо!