1 super() 用法描述
super(父类) 函数是用来调用父类的方法的函数
super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题
MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表
1.1 关于 Pytorch 中super(自己, self).__init__( ) 的使用
在 Pytorch 中继承 torch.nn.Module 后, 要执行 self(自己, self).__init__( ) 才能通过调用实例化的对象的 实例化对象( ) 的方法调用 forward 函数
2 示例
class parent():
def __init__(self):
self.parent = "This is the parent."
print("This is the parent in the parent's __init__.")
def func(self, object):
print("%s from parent." % object)
class childs(parent):
def __init__(self):
# super(childs, self) 先找到 childs 的父类 parent, 然后再使用对应的方法
super(childs, self).__init__()
print("This is in the child's __init__.")
def func(self, object):
super(childs, self).func(object)
print("childs' func.")
print(self.parent)
if __name__ == "__main__":
child = childs()
print("-------------Create childs()-------------------")
child.func("I love my parents!")
>>> This is the parent in the parent's __init__.
>>> This is in the child's __init__.
>>> -------------Create childs()-------------------
>>> I love my parents! from parent.
>>> childs' func.
>>> This is the parent.