2016-04-04 11 views
-1

Girdi olarak bir nesne listesi alan basit bir sınıfa sahibim ve bu işlem için dilimleme yapabileceğime emin olmak istiyorum.Özel nesnede dilimlemeyi geçersiz kılma (Python)

class MyClass(AbstractLocationClass): 
    def __init__(locations=None, **kwargs): 
     if locations is None: 
      locations = [] 
     self._locations = locations 
     #... do other stuff with kwargs.. 

Kullanıcıların yapmasına izin istiyorum aşağıdaki: Ben __getitem__ geçersiz kılmak zorunda ama ne emin değilim 0 obj [gibi tüm gösterim türlerini nasıl işleneceğini biliyor

m = MyClass(locations=[[1,2],[2,3],[3,4]]) 
sliced = m[0:1] 
print sliced 
>>> [[1,2],[2,3]] 

], obj [1: 2], vb ...

Birisi, bu özelliğin uygulanmasında doğru yolu önerebilir. Ben anladım ne

cevap

-1

Ben indeks tipinin olup olmadığını kontrol etmek gerekli olmasıdır slice

#---------------------------------------------------------------------- 
def __getitem__(self, index): 
    """slicing""" 
    if len(self) == 0: 
     return [] 

    if isinstance(index, slice): 
     return self._locations[index] 
    else: 
     if index <= len(self) -1: 
      return self._locatios[index] 
     else: 
      raise ValueError("Invalid index")