为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2021-10-19 15:00:22
我试图从一个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.iniinstance=xxxxxuser=abcuser_api=xxxx
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

这里:


     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]

您正在创建局部变量,而不是实例属性。您必须分配给self.instanceself.user andself.user_api`。


此外,对于您当前的代码,不保证会设置这些属性(如果在文件中找不到“user”、“user_api”或“instance”字样),因此您希望首先将这些属性设置为默认值, IE:


     # which default value makes sense is up to you

     self.instance = None

     self.user = None

     self.user_api = None


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

        for line in myfile:

            if 'instance' in line:

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

            if 'user' in line:

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

            if 'user_api' in line:

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

此外,Python有一个ConfigParser类,它知道如何处理INI文件,所以你可能会更好用这个代替。


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号