Python和__init__方法中的实例属性

时间:2018-05-24 12:16:34

标签: python

我正在尝试编写一个程序来读取配置文件,但在测试时遇到了这个错误:

self.connection_attempts = self.config_file.get('CONNECTION_ATTEMPTS', 'TIME')
AttributeError: 'list' object has no attribute 'get'

我很确定这是我无法获得的东西,但是我想知道问题出在哪里几个小时。 我的__init__方法如下所示:

import simpleconfigparser

class ReportGenerator:
    def __init__(self):
        self.config_parser = simpleconfigparser.configparser()
        self.config_file = config_parser.read('config.ini')
        self.connection_attempts = config_file.get('CONNECTION_ATTEMPTS', 'TIME')
        self.connection_timeout = config_file.get('CONNECTION_TIMEOUT', 'TIMEOUT')
        self.report_destination_path = config_file.get('REPORT', 'REPORT_PATH')

此代码使用SimpleConfigParser包。

1 个答案:

答案 0 :(得分:2)

您希望config_parser.get()不是config_file.get()config_parser.read()只是返回填充配置对象后成功读取的配置文件列表。 (通常称为configcfg,而非config_parser)。

此列表(config_file)在您的代码中没有用处,您根本不会捕获它。

from simpleconfigparser import simpleconfigparser

TIME = 5
TIMEOUT = 10
REPORT_PATH = '/tmp/'

class ReportGenerator:
    def __init__(self):
        self.config = simpleconfigparser()
        config.read('config.ini')

        self.connection_attempts = config.get('CONNECTION_ATTEMPTS', TIME)
        self.connection_timeout = config.get('CONNECTION_TIMEOUT', TIMEOUT)
        self.report_destination_path = config.get('REPORT', REPORT_PATH)

我的猜测也是,您以错误的方式使用.get()中的默认值,但我无法确定您提供的信息。