魔法方法:__getitem__()和__len__()

魔法方法:__getitem__()和__len__()

1.魔法函數簡介:

         在Python中,如果想實現創建類似於序列和映射的類(可以迭代以及通過[下標]返回元素),可以通過重寫魔法方法的方式去實現。常見的魔法方法包括__getitem__()、__setitem__()、__delitem__()、__len__(),它們的函數功能爲:

            1)__getitem__(self,key):返回鍵對應的值;
            2)__len__():返回元素的數量;
            3)__delitem__(self,key):刪除給定鍵對應的元素;
            4)__setitem__(self,key,value):設置給定鍵的值。

         其中只要實現了__getitem__和 __len__方法就會被認爲是序列。

         __len__()函數可以用來查看對象長度;

         __getitem__(self,key)函數可以對對象進行[]操作如切片、索引、iterd等,如果在類中定義了__getitem__()方法,那麼它的實例對象(假設爲P)就可以以P[key]形式取值,當實例對象做P[key]運算時,就會調用類中的__getitem__()方法。當對類的屬性進行下標的操作時,首先會被__getitem__()、__setitem__()、__delitem__()攔截,從而執行我們在方法中設定的操作,如賦值,修改內容,刪除內容等。

2.Dataset類中的__getitem__和 __len__方法:

         torch.utils.data.Dataset是PyTorch中用來表示數據集的抽象類,Dataset是一個包裝類,用來將數據包裝爲Dataset類,然後傳入DataLoader中從而使DataLoader類更加快捷的對數據進行操作。當處理自定義的數據集的時候必須繼承Dataset,然後重寫 __len__()和__getitem__()函數。

            1)__len__(): 使得len(dataset)返回數據集的大小;

            2)__getitem__():使得支持dataset[i]能夠返回第i個數據樣本這樣的下標操作,在__getitem__()函數中完成圖片的讀取工作可以減小內存開銷,只要在需要用到的時候纔將圖片讀入。

3.參考博客:

            1)https://www.jianshu.com/p/cca8e8834066

            2)https://zhuanlan.zhihu.com/p/87786297

            3)https://www.jianshu.com/p/6e22d21c84be

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章