class A:
def __init__(self, a: int, b: [str]):
self._foo = a
self._bar = b
def get_foo(self):
return self._foo
def get_bar(self):
return self._bar
def do_that(given):
x = given.get_foo()
x += 10
y = given.get_bar()
y[0] += ' there'
y = ['cool']
given = A(-10, ['test'])
x = A(1, ['hello'])
print(x.get_bar())
为什么print(x.get_bar())在那里打印hello,而不是'test',当给定的替换为A(-10,['test'])?在类似的功能中,
def test(x):
x = 4
return x
x = 1
test(x)
x替换为4,实际返回4。
答案 0 :(得分:0)
在您的第二段代码def test(x):
中,无论您设置x = 4
是什么,都要将输入覆盖为4。
在您的第一段代码中,当您致电do_that(given):
时,您实际上并未调用x.get_bar()
功能,因此['hello']
不会被['test']
覆盖}。此外,given
被定义为def get_bar(given):
内的变量,它永远不会被使用。