首先我要承认,我没有完全掌握python中的超级函数。 我知道它是用来从父类或同级类访问继承的方法的,每次创建类时,我都以同样的方式使用这个函数:
class ClassName(nn.Module):
def __init__(self)
super(ClassName, self).__init__()
现在我遇到了这两个案例,我不明白:
第一个是init函数内部的“super”,但内部有参数:
super(ClassName, self).__init__(self.filters, self.filters*2, 3, padding=1, bias=False, **kwargs)
2.第二个是转发函数中的“super”:
offsets = super(ClassName, self).forward(x)
请帮助我理解这些例子,我希望通过它们我能够更好地掌握超级函数
谢谢
@albert905,super()函数是用来访问另一个类函数的
您应该理解的是,调用这个函数的方式与调用类中任何函数的方式相同
如果我有一个父类,比如:
然后,在创建子类并调用super方法时,应添加父类要求的相同参数,因此可能的子类为:
您可以看到,我传递了与实例化父类相同的参数,如:
对于从ParentClass使用的任何函数,逻辑都是相同的。如果它需要参数,则应使用
super
函数传递它们对于您的示例,您传递了
x
对forward
类的调用,因为此函数需要一个参数PS:在您提到的第一个类
class ClassName(nn.Module)
中,您应该准确地理解nn.Module
实现的方法,以便理解super()
调用的函数在参数方面需要什么相关问题 更多 >
编程相关推荐