title: How to make slicing list @property to call its setter in python
body: <p>How to assign values to a slice of some <code>@property</code> of a class, which happens to be a <code>list</code> or <code>numpy.ndarray</code>, so that it's setter is called? Now it seems that assignment to a slice calls only getter. I cannot understand how a slice is handled under the hood in such case. Example code:</p>
  
  <pre><code>class MyClass:
    def __init__(self, a):
      self.a = a
      self._a = self.a
  
    @property
    def a(self):
      return self._a
  
    @a.setter
    def a(self, v):
      print("I'm called")
      self._a = v
  
  A = MyClass([1, 2, 3])
  # prints "I'm called"
  A.a = [4, 5, 6]
  # prints "I'm called"
  A.a[1] = 0
  # does not print anything
  </code></pre>
  
  <p>How to make <code>A.a[1] = 0</code> print <code>"I'm called"</code>?</p>