Python覆盖同一类中另一个函数中的类函数中使用的列表

时间:2017-07-05 11:03:57

标签: python class oop

我刚刚在Python2.6中发现了一些有趣的东西,并且想知道这应该是这样还是有错误。

以下是代码:

class Test:
    def __init__(self, test):
        self.test = test

    def test1(self, testarg1):
        self.test2(testarg1)
        return testarg1

    def test2(self, testarg1):
        testarg1[0] = 9

 p1 = Test('test')
 print (p1.test1([1,2,3]))

所以上面的代码作为结果列表返回[9,2,3],但是使用test2函数我永远不会返回修改后的列表。还要记住,在同一个类的函数中为参数赋予相同的名称并不酷,更改变量名称没有帮助。

即使将函数testarg1中的test1完全分配给另一个变量并传递它也无助于仍然返回上面的结果。有人进一步解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

由于Jean-Francois已经解释过所有内容都通过引用传递,并且您已经更改了test2中的列表。如果您的目标是了解方法覆盖,请查看此示例

class Parent(object):
    def __init__(self):
        self.value = 5

    def get_value(self):
        return self.value

class Child(Parent):
    def get_value(self):
        return self.value + 1

子类和父类中的方法具有相同的名称,这是至关重要的。 那我们就有了

c = Child()
c.get_value()
6