globalList = []
class MyList:
def __init__(self):
self._myList = [1, 2, 3]
@property
def myList(self):
return self._myList + globalList
@myList.setter
def myList(self, val):
self._myList = val
mL1 = MyList()
print("myList: ", mL1.myList)
mL1.myList.append(4)
print("after appending a 4, myList: ", mL1.myList)
mL1.myList.extend([5,6,"eight","IX"])
print("after extend, myList: ", mL1.myList)
Run Code Online (Sandbox Code Playgroud)
结果:
myList: [1, 2, 3]
after appending a 4, myList: [1, 2, 3]
after extend, myList: [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我面临的问题是mL1.myList.append(4)和mL1.myList.extend([5,6,"8","IX"])不修改mL1对象中的_myList属性.我该怎么做才能解决问题?
我是Python的新手,我刚刚发现了这些属性.当我在一个简单的变量上尝试它时,它工作得很好,但我不能使它在列表上工作.执行下面的代码时,它将调用两次getter而不是setter.我知道在我的例子中,该属性没有附加值,但它是为了简化.
class C:
def __init__(self):
self._x = [1, 2, 3]
@property
def x(self):
print("getter")
return self._x
@x.setter
def x(self, value):
print("setter")
self._x = value
c = C()
c.x[1] = 4
print(c.x[1])
Run Code Online (Sandbox Code Playgroud)
有没有人知道我做错了什么?