gpt4 book ai didi

python - 如何用不同的类修改同一个变量?

转载 作者:行者123 更新时间:2023-11-28 20:30:08 26 4
gpt4 key购买 nike

我有以下代码块。

class Starter():
def __init__(self, reference):
self.reference = reference

def change_ref(self):
print("Got :", self.reference)
self.reference = 1
print("Now :", self.reference)

class Stopper():
def __init__(self, reference):
self.reference = reference

def change_ref(self):
print("Got :", self.reference)
self.reference = 2
print("Now :", self.reference)


class Controller():

def __init__(self):
self.main_reference = 0
self.starter = Starter(self.main_reference)
self.stopper = Stopper(self.main_reference)

controller = Controller()
controller.starter.change_ref()
controller.stopper.change_ref()

它输出以下内容:

Got : 0
Now : 1
Got : 0
Now : 2

我希望起始类和终止类修改并到达同一个对象。所以我正在寻找的输出如下:

Got : 0
Now : 1
Got : 1
Now : 2

使用三个不同的类来做到这一点的最佳方法是什么?我很好奇我们是否可以利用类,而不是数组的使用。如果可能的话,我也可以使用嵌套类。我唯一的限制是 StarterStopper 类必须彼此分开,因为在我的项目中我将它们用作 QThread 子类。这导致他们在不同的方式。

最佳答案

不确定这是最优雅的方法,但使用列表作为引用来完成这项工作:

class Starter():
def __init__(self, reference):
self.reference = reference

def change_ref(self):
print("Got :", self.reference[0])
self.reference[0] = 1
print("Now :", self.reference[0])

class Stopper():
def __init__(self, reference):
self.reference = reference

def change_ref(self):
print("Got :", self.reference[0])
self.reference[0] = 2
print("Now :", self.reference[0])


class Controller():

def __init__(self):
self.main_reference = [0]
self.starter = Starter(self.main_reference)
self.stopper = Stopper(self.main_reference)

controller = Controller()
controller.starter.change_ref()
controller.stopper.change_ref()

关于python - 如何用不同的类修改同一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58525185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com