我正在尝试使用不断更新的全局变量作为参数来实例化一个类。 但发生的情况是类(在自己的线程中运行)不会识别全局变量的更改,它将其视为传递时的值。我可以直接引用类中的全局变量,但我想知道在实例化它时是否有一种方法可以传递它,以节省我的重复代码 - 每个不同的全局变量都有一个?
使用下面的代码,全局变量正在更新,但不在类内:
` 导入线程 导入时间
# 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中的整数是不可变的。当您初始化
self.global_var
时,您正在制作该值的 copy,而不是对全局 global_var
的引用。
你将不得不重新考虑你的方法。这感觉就像是一个 XY 问题。 为什么你想这样做?