在python中访问函数内的类变量

我试图从一个config file类中的 python 中读取一些值,然后我试图在同一个类中的另一个函数中访问这些变量。我已经尝试了下面的代码,但我的代码似乎有问题。这是我尝试过的:


class CLEAN():

    def __init__(self):

        parser = argparse.ArgumentParser(description='Remove inactive users from artifactory')

        parser.add_argument('-f', '--config_file', dest='config_file', default="", required=True, action="store", help='the config file with creds')

        parser.add_argument('-d', '--log_dir', dest='log_dir', default="", required=True, action="store", help='the logs dir')

        parsers = parser.parse_args()


        self.config_file = parsers.config_file.strip()

        self.log_dir = parsers.log_dir.strip()


        if not os.path.exists(self.log_dir):

            os.mkdir(self.log_dir)


        with open('config.ini', 'r') as myfile:

            for line in myfile:

                if 'instance' in line:

                     instance = line.split('=')[1]

                if 'user' in line:

                    user = line.split('=')[1]

                if 'user_api' in line:

                     user_api = line.split('=')[1]


    def print_values(self):

        logger.info(self.instance)

        logger.info(self.user)

        logger.info(self.user_api)`

这部分代码后面是 main() 我得到的错误是


Traceback (most recent call last):

 File "clean.py", line 48, in <module>

    c.main()

  File "clean.py", line 44, in main

    self.print_values()

  File "clean.py", line 39, in print_values

   logger.info(self.instance)

AttributeError: CLEAN instance has no attribute 

'instance'



cat config.ini

instance=xxxxx

user=abc

user_api=xxxx


PIPIONE
浏览 255回答 2
2回答

收到一只叮咚

这里:&nbsp; &nbsp; &nbsp;with open('config.ini', 'r') as myfile:&nbsp; &nbsp; &nbsp; &nbsp; for line in myfile:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if 'instance' in line:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;instance = line.split('=')[1]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if 'user' in line:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user = line.split('=')[1]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if 'user_api' in line:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;user_api = line.split('=')[1]您正在创建局部变量,而不是实例属性。您必须分配给self.instanceself.user andself.user_api`。此外,对于您当前的代码,不保证会设置这些属性(如果在文件中找不到“user”、“user_api”或“instance”字样),因此您希望首先将这些属性设置为默认值, IE:&nbsp; &nbsp; &nbsp;# which default value makes sense is up to you&nbsp; &nbsp; &nbsp;self.instance = None&nbsp; &nbsp; &nbsp;self.user = None&nbsp; &nbsp; &nbsp;self.user_api = None&nbsp; &nbsp; &nbsp;with open('config.ini', 'r') as myfile:&nbsp; &nbsp; &nbsp; &nbsp; for line in myfile:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if 'instance' in line:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.instance = line.split('=')[1]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if 'user' in line:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.user = line.split('=')[1]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if 'user_api' in line:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.user_api = line.split('=')[1]此外,Python有一个ConfigParser类,它知道如何处理INI文件,所以你可能会更好用这个代替。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python