我本质上想要的是一个辅助函数(可以在类的外部,也可以使用任何类),以更改函数中声明的局部变量的值。
class MainClass:
def importantFunction():
truthValue1 = False
truthValue2 = False
change(truthValue1,truthValue2)
return truthValue1 && truthValue2
def changeBoolValue(val1,val2):
val1 = not val1
val2 = not val2
我想借助外部函数以某种方式更改真理值1和真理值2的值。我尝试过将其移到类中并使用不起作用的self,但我确实希望不要将trueValue1,2设置为全局类。我该如何处理?谢谢
答案 0 :(得分:1)
布尔值是Python中的不可变类型,因此您不能通过引用传递它。考虑将其包装在@Andrej Kesely的答案之类的列表(可变类型)中,或使用return。
class MainClass:
def importantFunction():
truthValue1 = False
truthValue2 = False
truthValue1, truthValue2 = changeBoolValue(truthValue1, truthValue2)
return truthValue1 && truthValue2
def changeBoolValue(val1, val2):
return not val1, not val2
答案 1 :(得分:1)
您可以重新分配名称:
truthValue1, truthValue2 = change(truthValue1, truthValue2)
def change(val1, val2):
val1 = not val1
val2 = not val2
return val1, val2
以某种方式封装可能会更好:
class Truth:
def __init__(self):
self.val1 = False
self.val2 = False
def change(self):
self.val1 = not self.val1
self.val2 = not self.val2
然后:
truth = Truth()
truth.change()
答案 2 :(得分:0)
要更改值,您需要在列表中传递它们,例如:
class MainClass:
def importantFunction(self): # don't forget self
truthValues = [False, False]
changeBoolValue(truthValues)
return truthValues[0] and truthValues[1] # using `and`, not `&&`
def changeBoolValue(val):
val[0] = not val[0]
val[1] = not val[1]
答案 3 :(得分:0)
您需要从change
函数返回,然后重新分配变量以更改其值
class MainClass:
def importantFunction():
truthValue1 = False
truthValue2 = False
thruthValue1, truthValue2 = change(truthValue1,truthValue2)
return truthValue1 && truthValue2
def changeBoolValue(val1,val2):
val1 = not val1
val2 = not val2
return val1, val2