1. 程式人生 > 其它 >終於搞懂了 super(XXXX, self).__init__()的作用是啥了

終於搞懂了 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