Python类替换不起作用

时间:2018-06-14 09:24:47

标签: python-3.x

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。

1 个答案:

答案 0 :(得分:0)

在您的第二段代码def test(x):中,无论您设置x = 4是什么,都要将输入覆盖为4。

在您的第一段代码中,当您致电do_that(given):时,您实际上并未调用x.get_bar()功能,因此['hello']不会被['test']覆盖}。此外,given被定义为def get_bar(given):内的变量,它永远不会被使用。