終於搞懂了 super(XXXX, self).__init__()的作用是啥了
來源 https://blog.csdn.net/weixin_44025103/article/details/126143715
在使用pytorch框架時,難免要自己定義網路。於是,super(XXXX, self).init(),就成了自定義網路結構時必不可少的第一句。但是,super(XXXX, self).init()具體的作用是什麼我一直沒有搞清楚。閱讀了大量的部落格後,我終於搞懂了!
一言以蔽之:super(XXX, self).init()——對繼承自父類的屬性進行初始化,並且用父類的初始化方法初始化繼承的屬性。
我們先看一個簡單的例子:
class Person():
def __init__(self, name, gender):
# 為name和gender賦值
self.name = name
self.gender = gender
def printinfo(self):
print(self.name, self.gender)
# Stu類繼承Person類
class Stu(Person):
def __init__(self, name, gender, school):
# 使用父類的初始化方法來初始化子類name和gender屬性
super(Stu, self).__init__(name, gender)
self.school = school
def printinfo(self):
# 對父類的printinfo方法進行重寫
print(self.name, self.gender, self.school)
if __name__=='__main__':
stu = Stu('Bob', 'female', '5th')
stu.printinfo()
>>>
Bob female 5th