__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
"""