micropython/tests/basics/builtin_slice.py

45 wiersze
828 B
Python

# test builtin slice
# ensures that slices passed to user types are heap-allocated and can be
# safely stored as well as not overriden by subsequent slices.
# print slice
class A:
def __getitem__(self, idx):
print("get", idx)
print("abc"[1:])
print("get", idx)
return idx
def __setitem__(self, idx, value):
print("set", idx)
print("abc"[1:])
print("set", idx)
self.saved_idx = idx
return idx
def __delitem__(self, idx):
print("del", idx)
print("abc"[1:])
print("del", idx)
return idx
a = A()
s = a[1:2:3]
a[4:5:6] = s
del a[7:8:9]
print(a.saved_idx)
# nested slicing
print(A()[1:A()[A()[2:3:4]:5]])
# tuple slicing
a[1:2,4:5,7:8]
a[1,4:5,7:8,2]
a[1:2, a[3:4], 5:6]
# check type
print(type(s) is slice)