Python:对象方法看不到另一个方法对 self.variable 所做的更改

问题描述 投票:0回答:0

我有两个函数处理相同的数据,所以我认为创建一个类是有意义的。但是我无法从第二种方法中看到第一种方法中对 self.variable 所做的更改。

class Settings:
    def __init__(self):
        self.settings_to_change = {}

    def get_default(self, **kwargs):   
        self.settings_to_change.update('setting': True})
        log(f'Settings to be changed: {settings_to_change})
        
    def set_default(self, **kwargs):
        log(f'Settings to be changed: {settings_to_change})


settings = Settings()

settings.get_default()
# output: Settings to be changed: {'setting': True}

settings.set_default()
# output: Settings to be changed: {} 

我认为使用 self.对于变量并在创建对象时初始化它意味着我可以在一个对象方法中更新变量,然后在第二个对象方法中查看更新。但它似乎恢复到初始值。

我不确定这是否与我的对象的调用方式有关。

我有一个可以根据命令运行 python 脚本的应用程序。

首先,当设置窗口打开时:

RunScript(script.py,action=settings.get_default)

然后

script.py
是这样的:

from resources.lib.script.actions import *
from resources.lib.script.settings import Settings
from resources.lib.utilities import *


class Main:
    def __init__(self, *args):
        settings = Settings()
        try:
            self.params = dict(arg.split('=', 1) for arg in args)
        except:
            self.params = {}
        function = eval(self.params['action'])
        function(**self.params)


if __name__ == '__main__':
    Main(*sys.argv[1:])

第一次执行工作正常,但是当设置窗口关闭时它调用:

RunScript(script.py,action=settings.set_default)
那时我在我的日志中看到 self.settings_to_change 看起来是空的。

python inheritance methods scope variable-assignment
© www.soinside.com 2019 - 2024. All rights reserved.