__setslice__
không được dùng nữa - bạn sẽ muốn sử dụng __setitem__
với đối số lát.
Lưu ý rằng, trên Python documentation, lát chỉ có thể được thực hiện theo các dạng cú pháp sau: a[i:j:step]
, a[i:j, k:l]
hoặc a[..., i:j]
. Cú pháp dựa trên dấu hai chấm được sử dụng để định nghĩa một đối tượng slice duy nhất, nhưng như ví dụ thứ hai cho thấy bạn có thể có nhiều đối số slice (chúng được truyền vào dưới dạng một bộ các lát).
Dưới đây là một ví dụ trong đó in luận key
, để xem hình thức của nó:
>>> class Foo(object):
>>> def __setitem__(self, key, value):
>>> print key
>>>
>>> a = Foo()
>>> a[1:1] = 1
slice(1, 1, None)
>>>
>>> a[1:1:1] = 1
slice(1, 1, 1)
>>>
>>> a[1:1, 1:1] = 1
(slice(1, 1, None), slice(1, 1, None))
gì bốn đối số nào bạn muốn để vượt qua? – cyroxx