之前看过网上很多教程,奈何只是学习了理论,实践中不怎么用到,所以就有点不明所以,但是最近工作中经常用到这两个函数,所以特此对比了一下
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