【发布时间】:2020-03-16 00:45:26
【问题描述】:
我想了解为什么以下三个极其简单的 python 代码给出(显然)不一致的答案。这只是一个了解正在发生的事情的玩具练习,而不是现实世界的问题。 myList(list) 类继承自 list 并定义了一个方法“add”,该方法应该模仿众所周知的“extend”方法。我尝试了三种方式来做到这一点,直接使用extend,使用+ 运算符和使用+=。然而,令人惊讶的是,我得到了不一致的答案。请注意,在这三个代码中,有一行(在 add 方法内)发生了变化。
代码 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]
我有点困惑……发生了什么事?
提前谢谢你。
【问题讨论】:
标签: python list inheritance