Python實現可以切片的物件和可以迭代的物件

2021-10-08 09:29:26 字數 1766 閱讀 5866

可以切片的物件

class

company

(object):

def__init__

(self, employee_list)

: self.employee = employee_list

def__getitem__

(self, item)

:# 魔法函式 雙下劃線開頭 雙下劃線結尾

return self.employee[item]

def__len__

(self)

:return

len(self.employee)

if __name__ ==

"__main__"

: company = company(

["tom"

,"bob"

,"jane"])

# employee = company.employee

## for em in employee:

# print(em)

# 實現了魔法函式 __getitem__

for em in company:

print

(em)

company1 = company[0:

2]print

(company1)

# len函式首先會呼叫魔法函式__len__(self)

# 如果沒有會嘗試使用getitem達到求長度的效果

print

(len

(company1)

)

可以迭代的物件
from collections.abc import iterator

class

company

(object):

def__init__

(self, employee_list)

: self.employee = employee_list

def__iter__

(self)

:return myiterator(self.employee)

class

myiterator

(iterator)

:def

__init__

(self, employee_list)

: self.iter_list = employee_list

self.index =

0def

__next__

(self)

:# 真正返回迭代值的邏輯

try:

word = self.iter_list[self.index]

except indexerror:

raise stopiteration

self.index +=

1return word

if __name__ ==

"__main__"

: company = company(

["tom"

,"bob"

,"jane"])

my_itor =

iter

(company)

while

true

:try

:print

(next

(my_itor)

)except stopiteration:

pass

python切片的物件 Python切片物件和

python中是否存在某種內部機制,它以不同的方式處理傳遞給 getitem 的引數,並自動將start stop step構造轉換為片?在 這是我的意思class exampleclass object def getitem self,args return args def call self...

實現可切片的物件

ist序列的切片說明 模式 start end step 其中,第乙個數字start表示切片開始位置,預設為0 第二個數字end表示切片截止 但不包含 位置 預設為列表長度 第三個數字step表示切片的步長 預設為1 當start為0時可以省略,當end為列表長度時可以省略,當step為1時可以省略...

5 4 實現可切片的物件

list序列的切片說明 模式 start end step 其中,第乙個數字start表示切片開始位置,預設為0 第二個數字end表示切片截止 但不包含 位置 預設為列表長度 第三個數字step表示切片的步長 預設為1 當start為0時可以省略,當end為列表長度時可以省略,當step為1時可以省...