可以切片的物件
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時可以省...