Discuss / Python / 提醒一下,注意这里貌似有坑

提醒一下,注意这里貌似有坑

Topic source

Neko章鱼

#1 Created at ... [Delete] [Delete and Lock User]
class A(object):
    def __init__(self):
        self.__alist = [1,2,3,4,5]
    #看这里,我只写了@property
    @property
    def alist(self):
        return self.__alist

a = A()
a.alist[0] = 99999
#这里alist就变成了[99999,2,3,4,5]
a.alist

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

不要轻易怀疑python,要总是质疑自己的代码

a.alist = [1,2,3]

AttributeError: can't set attribute

我想是因为list存的是地址吧 不能将新的list赋给alist,但是可以改变原来list里的元素

Dream_Zurich

#4 Created at ... [Delete] [Delete and Lock User]

alist是read only对象,而且 __alist 是私有变量了 但是[1,2,3,4,5]是一个list,它是可以被修改的。 不能修改的是alist,并不是alist对象所指的list


  • 1

Reply