Python-将全局变量(不断更新)传递到类中

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

我正在尝试使用不断更新的全局变量作为参数来实例化一个类。 但发生的情况是类(在自己的线程中运行)不会识别全局变量的更改,它将其视为传递时的值。我可以直接引用类中的全局变量,但我想知道在实例化它时是否有一种方法可以传递它,以节省我的重复代码 - 每个不同的全局变量都有一个?

使用下面的代码,全局变量正在更新,但不在类内:

` 导入线程 导入时间

# Global variable
global_number = 0

class GlobalVarClass:
    def __init__(self, global_var):
        """
        Initializes the class with a global variable.
        """
        self.global_var = global_var

    def print_value(self):
        """
        Prints the current value of the global variable.
        """
        print(f"Current Global Variable Value: {self.global_var}")

def increment_global_variable():
    """
    Increments the global variable by 1 every second.
    """
    global global_number
    while True:
        time.sleep(1)  # Wait for 1 second
        global_number += 1  # Increment the global variable by 1
        print(f"Incremented Global Variable: {global_number}")

def main():
    # Create an instance of the class and pass the global variable as an argument
    global_instance = GlobalVarClass(global_number)

    # Start the thread to increment the global variable
    increment_thread = threading.Thread(target=increment_global_variable, daemon=True)
    increment_thread.start()

    # Continuously print the current value of the global variable
    while True:
        global_instance.print_value()
        time.sleep(2)  # Print the value every 2 seconds to see the updates

if __name__ == "__main__":
    main()`
python class global-variables
1个回答
0
投票

你面临的问题是Python中的整数是不可变的。当您初始化

self.global_var
时,您正在制作该值的 copy,而不是对全局
global_var
的引用。

你将不得不重新考虑你的方法。这感觉就像是一个 XY 问题。 为什么你想这样做?

© www.soinside.com 2019 - 2024. All rights reserved.