PythonNoob在这里讨论元组和列表的限制。在
我没有问题,只是一个关于__methodname__
方法在Tuple类和/或一般情况下的用法的一般查询。在
我知道你不能修改元组,为了这样做,你必须把它转换成一个列表,修改所说的列表,然后再转换回元组,但是我试了一下__add__
方法,发现它是有效的。使用此方法创建新元组并对现有元组进行修改有哪些问题和限制?在
代码:
myTuple = ('item1', 2, 'item3', ['list1', 'list2'])
tupleModification = myTuple.__add__(('newTupleItem1','newTupleItem2'))
这将输出以下内容:
^{pr2}$这是正确的,但我想知道我是否在玩火,因为我还没有看到这个解决方案张贴在任何地方有关修改元组。在
编辑:我知道您不能修改现有的元组,这将创建一个新的元组实例。我想我可能用我的命名惯例把人们搞糊涂了。在
__add__
是在执行以下操作时调用的方法:因此,这不会修改
myTuple
,而是创建一个新的tuple
,其内容是myTuple
的内容与("newTupleItem1", "newTupleItem2")
相连。在您可以打印
^{pr2}$myTuple
以查看它是否未被修改:您可以检查
^{3}$myTuple
和tupleModification
不是同一个对象:你不能修改元组,没错。但是,您可以将两个现有的元组连接到一个新的元组中。这是通过
+
运算符完成的,该运算符又调用__add__
方法。生成的元组不是任何原始元组的“修改”,而是一个新的独立元组。这就是你发布的代码所做的。更简洁地说,您可以:编辑:作为一个澄清,你无论如何都不能“编辑”一个元组,也就是说,从中添加或删除元素,或者更改它的内容。但是,如果元组包含可变对象(如列表),则可以修改该内部对象:
^{pr2}$我认为从根本上说,您对创建带有修改的新对象(在本例中是
__add__
)和修改现有对象(例如extend
)之间的区别感到困惑。在__add__
正如前面提到的其他答案,
__add__
方法实现了+
运算符,并返回一个新对象。元组和列表都有一个。例如:extend
列表是可变的,有一个
^{pr2}$extend
方法,它修改现有对象并返回None
。元组是不可变的。例如:列表还有其他方法可以更改现有对象,如}最为相似。在
append
、sort
、pop
等,但是extend
与{相关问题 更多 >
编程相关推荐