之前看過網上很多教程,奈何只是學習了理論,實踐中不怎麼用到,所以就有點不明所以,但是最近工作中經常用到這兩個函數,所以特此對比了一下
call 就是讓定義的類可以像普通函數一樣,直接用 類名(參數)
就可以調用
getitem 就是讓定義的類可以迭代調用
下面直接用代碼表示
class RandomFlip():
def __init__(self, flip_prob=0.5):
self.flip_prob = flip_prob
def __call__(self, sample):
print('sample is :', sample)
def __getitem__(self, idx):
print('current idx is: ', idx)
使用方法如下
rf = RandomFlip()
rf[1] # 會調用 __getitem__
rf("20") # 會調用 __call__
>>>
current idx is: 1
sample is : 20