__call__
该方法的功能类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用。
实例
class A: def __init__(self, b): self.b = b def __call__(self, a): print(a) # 注意下面,call使我们可以像调用普通函数一样调用实例,而不是创建类时就执行call,与init不冲突!!! a = A() a("调用!") """ 调用! """
__getitem__
__getitem__
的作用是重载[],在pytorch自定义数据集的实现中,通过索引返回一张图片和对应标签。
实例:
class A: def __init__(self): self.lst = [1, 2, 3, 4] def __getitem__(self, index): return self.lst[index] a = A() print(a[1]) # result: 2
__next__
和__iter__
将对象变成一个可迭代对象。可以适用next函数调用。
class ite: def __init__(self, b): self.b = b def __next__(self): self.b += 1 return f"this is {self.b}" def __iter__(self): # 没有好像也可以用next调用,问题来了,这个究竟是啥作用? return self c = ite(0) for i in range(3): print(next(c)) """res this is 1 this is 2 this is 3 """