我開始使用Python 3進行OOP,我發現property
的概念確實很有趣。在Python中創建列表屬性
我需要封裝一個私人列表,但我怎麼能用這個範例的列表?
這裏是我的幼稚的嘗試:
class Foo:
""" Naive try to create a list property.. and obvious fail """
def __init__(self, list):
self._list = list
def _get_list(self, i):
print("Accessed element {}".format(i))
return self._list[i]
def _set_list(self, i, new):
print("Set element {} to {}".format(i, new))
self._list[i] = new
list = property(_get_list, _set_list)
預期這並不表現甚至讓蟒蛇崩潰,當我嘗試下面的代碼。這是我想Foo
展示的虛擬行爲:
>>> f = Foo([1, 2, 3])
>>> f.list
[1, 2, 3]
>>> f.list[1]
Accessed element 1
2
>>> f.list[1] = 12
Set element 1 to 12
>>> f.list
[1, 12, 3]
是'print's重要? –
@AnandSKumar是的,因爲它們實際上代表了我使用'i'和'new'的值執行的其他類成員的進一步更新。 –