1
二傳手

比方說,我們有下面的代碼:在界定在Python

class A: 
     def __init__(self): 
      self.x = [p for p in range(10)] 

     def __getitem__(self, key): 
      return self.x[key] 

a = A() 
print a[2] #will return a.x[2] = 2 

現在,我怎麼定義a[i]的制定者?我將如何定義裝飾器?

簡單屬性的過程非常簡單,但Pyhton在這種情況下如何理解我想爲a[i](類似於@a[i].setter)定義一個setter?

回答

4

您的代碼中沒有任何裝飾器,也不需要一個支持物品分配。

只需實現object.__setitem__() method爲類:

class A: 
    def __init__(self): 
     self.x = [p for p in range(10)] 

    def __getitem__(self, key): 
     return self.x[key] 

    def __setitem__(self, key, value): 
     self.x[key] = value