【发布时间】:2021-01-07 03:47:26
【问题描述】:
我对以下结果感到困惑,因为我的理解是[:] 进行了浅拷贝,当您更改旧列表或新复制的列表时,它们都应该更改吗? (这是我正在关注的 Coursera 课程之一)。另外,如果我想将列表声明为类变量,其意图是默认值,并且如果选择子类可以覆盖它/修改它,但父类应该保持不变,这是正确的方法吗这样做 ?非常感谢您的帮助。
oldlist=[["a"],"b"]
newlist= oldlist[:]
newlist[0]="2"
oldlist[0].append(["c"])
print(oldlist) #printed out [['a', ['c']], 'b']
print(newlist) #printed out ['2', 'b']
class Book():
similar_books =['book one','book two']
def __init__ (self, n, l):
self.name= n
self.like = l
self.similar_books = self.similar_books[:] # is it the correct way to do so?
【问题讨论】:
-
我认为您正在从代码中获得所需的行为。你可以以同样的方式继续前进。
-
我认为你应该 google : 'static property in pyhton' 代替..
标签: python python-3.x list class copy