我希望了解以下三个极为简单的Python代码为什么会给出(表面上)不一致的答案。这只是一个玩具练习,目的是了解发生了什么,而不是实际问题。类myList(list)继承自list并定义了一个名为“add”的方法,该方法应模仿众所周知的“extend”方法。我尝试用直接使用extend、+运算符和+=三种方法来做到这一点。然而,令人惊讶的是,我得到了不一致的答案。请注意,在这三个代码中,只有一个行(在add方法内部)发生了变化。
CODE 1: self.extend(item)
class myList(list):
def add(self,item):
self.extend(item)
l = myList([1,2])
l.add([3,4])
print(l)
输出[1, 2, 3, 4]
代码2:self = self + item
class myList(list):
def add(self,item):
self = self + item
l = myList([1,2])
l.add([3,4])
print(l)
打印 [1, 2]
代码 3:self += item
class myList(list):
def add(self,item):
self += item
l = myList([1,2])
l.add([3,4])
print(l)
打印 [1, 2, 3, 4]
我有点困惑...这是在发生什么?
提前感谢您。