【发布时间】:2013-05-04 05:15:50
【问题描述】:
globalList = []
class MyList:
def __init__(self):
self.myList = [1, 2, 3]
@property
def myList(self):
return self.myList.extend(globalList)
@myList.setter
def myList(self):
return self.myList
mL1 = MyList()
print("myList: ", mL1.myList)
mL1.myList.append(4)
print("after appending a 4, myList: ", mL1.myList)
我的目标是能够调用评估 myList 实例属性和全局对象 globalList 的 mL1.myList,但这是错误:
Traceback (most recent call last):
File "C:\Documents and Settings\Administrator\Desktop\Dropbox\sandbox.py", line 14, in <module>
mL1 = MyList()
File "C:\Documents and Settings\Administrator\Desktop\Dropbox\sandbox.py", line 6, in __init__
self.myList = [1, 2, 3]
TypeError: myList() takes 1 positional argument but 2 were given
我应该怎么做才能解决这个问题?
【问题讨论】:
-
我不确定您要做什么,但您似乎在滥用属性。属性设置器(您使用
myList.setter创建的)是在您执行mL1.myList = something时调用的。它需要接受另一个参数,即属性要设置为的值something。如果你想要的只是能够阅读mL1.myList,那你为什么还需要一个二传手呢?你想让二传手做什么?
标签: python list decorator setter