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)
我的目标是能够调用mL1.myList,它计算myList实例属性和全局对象globalList,但错误如下:
^{pr2}$我该怎么解决这个问题?在
你的代码有很多问题。可能最大的一个问题是,你不能给你的属性起一个与它读取的基础属性相同的名称。如果在
myList
getter中执行self.myList
,它将导致无限递归,因为为了找出self.myList
是什么,它必须再次调用属性getter。在为了避免这种情况,您应该让getter和setter引用其他一些属性,通常是相同的名称,但前面加下划线。也就是说,对于您的情况,使用一个“hidden”属性
_myList
来存储该属性获取/设置的值。在其次,属性设置器需要接受要将属性设置为的值的参数,并且需要将基础属性设置为该值。在
最后,您将返回
extend
的结果,但是extend
修改了列表并返回None,因此您的代码将生成None
作为mL1.myList
的值。在您的代码应该更像这样:
如果您使用的是python3,那么您可以只执行}。在
class MyList:
而不是{相关问题 更多 >
编程相关推荐