foo为何不会在myClass2中使用bool进行更新(示例1),但是如果我使用列表(示例2),它就可以工作。我想节省内存,解释器在传递列表时使用引用,但在使用布尔值,整数等时创建副本?我该如何通过提现?我试图避免使用全局。 (Python 3.7.0)
示例1
class myClass1():
def __init__(self, foo):
self.foo = foo
def run(self):
print(self.foo)
self.foo = False
class myClass2():
def __init__(self, foo):
self.foo = foo
def run(self):
print(self.foo)
def main():
foo = True
c1 = myClass1(foo)
c2 = myClass2(foo)
c1.run()
c2.run()
if __name__ == '__main__':
main()
输出
True
True
示例2
class myClass1():
def __init__(self, foo):
self.foo = foo
def run(self):
print(self.foo[0])
self.foo[0] = False
class myClass2():
def __init__(self, foo):
self.foo = foo
def run(self):
print(self.foo[0])
def main():
foo = [True]
c1 = myClass1(foo)
c2 = myClass2(foo)
c1.run()
c2.run()
if __name__ == '__main__':
main()
输出
True
False