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)?

ответ

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