最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

終于搞懂了Python中super(XXXX,?self).__init__()的作用了

 更新時(shí)間:2022年08月05日 11:43:56   作者:波爾德  
本文主要介紹了終于搞懂了Python中super(XXXX,?self).__init__()的作用了,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在使用pytorch框架時(shí),難免要自己定義網(wǎng)絡(luò)。于是,super(XXXX, self).init(),就成了自定義網(wǎng)絡(luò)結(jié)構(gòu)時(shí)必不可少的第一句。但是,super(XXXX, self).init()具體的作用是什么我一直沒有搞清楚。閱讀了大量的博客后,我終于搞懂了!

一言以蔽之:super(XXX, self).init()——對(duì)繼承自父類的屬性進(jìn)行初始化,并且用父類的初始化方法初始化繼承的屬性。

我們先看一個(gè)簡(jiǎn)單的例子:

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): ??
? ? ?? ?# 對(duì)父類的printinfo方法進(jìn)行重寫
? ? ? ?
? ? ? ? print(self.name, self.gender, self.school)?


? ??
if __name__=='__main__':
? ? stu = Stu('Bob', 'female', '5th')
? ? stu.printinfo()

>>>
Bob female 5th

當(dāng)然,如果初始化的邏輯與父類的不同,不使用父類的方法,自己重新初始化也是可以的。比如:

class Person(object):
? ? def __init__(self, name, gender, age):
? ? ? ? self.name = name
? ? ? ? self.gender = gender
? ? ? ? self.age = age
? ? ? ??
# Student類繼承Person類
class Student(Person):
? ? def __init__(self, name, gender, age, school, score):
? ??
? ? ?? ?# 調(diào)用父類的初始化方法,初始化name、gender、age屬性
? ? ? ? super(Student, self).__init__(name,gender, age)
? ? ? ??
? ? ? ? # 對(duì)name、gender屬性進(jìn)行改寫。age屬性仍保持父類的初始化方法
? ? ? ??
? ? ? ? self.name = name.upper() ?# 姓名改為大寫
? ? ? ? self.gender = gender.upper() ?# 性別改為大寫
? ? ? ? self.school = school
? ? ? ? self.score = score
? ? ? ??
s = Student("Alice", "female", "18", "High school", "17")
print(s.name, s.gender, s.school, s.score)

>>>
ALICE FEMALE High school 17

在理解了上面的小例子后,我們?cè)僮屑?xì)研究一下機(jī)器學(xué)習(xí)中的代碼:

class Net(nn.Module): # 繼承自nn.Moudle

? ? def __init__(self):
? ??
? ? ? ? super(Net, self).__init__()
? ? ? ? # 輸入圖像channel:1;輸出channel:6;5x5卷積核
? ? ? ? self.conv1 = nn.Conv2d(1, 6, 5)

super(Net, self).init()的含義:子類Net類繼承父類nn.Module,super(Net, self).init()就是對(duì)繼承自父類nn.Module的屬性進(jìn)行初始化。并且是用nn.Module的初始化方法來初始化繼承的屬性。

也就是:用父類的方法初始化子類的屬性。

有的人肯定會(huì)問,為啥要用父類的方法去初始化屬性呢?原因很簡(jiǎn)單:就是因?yàn)楦割惖姆椒ㄒ呀?jīng)寫好了,我們只需要調(diào)用就可以了。難道你還想自己寫一堆代碼去初始化各種權(quán)重和參數(shù),處理一堆forward和backward的邏輯嗎?

最后,多一句嘴,介紹一寫在python中__init()的作用

在python中創(chuàng)建類后,通常會(huì)創(chuàng)建一個(gè) init__ ()方法,這個(gè)方法會(huì)在創(chuàng)建類的實(shí)例的時(shí)候自動(dòng)執(zhí)行。

實(shí)例1:【實(shí)例化Bob這個(gè)對(duì)象的時(shí)候, __ init__ ()方法會(huì)自動(dòng)執(zhí)行】:

在下面的示例中,我們?cè)趯?shí)例化Bob這個(gè)對(duì)象的時(shí)候, __ init__ ()方法就已經(jīng)自動(dòng)執(zhí)行了,如果不是__ init__ ()方法,比如說eat()方法,那就只有在調(diào)用時(shí)才會(huì)執(zhí)行。

class Person():
? ? def __init__(self):
? ? ? ? print("是一個(gè)人")
? ? def eat(self):
? ? ? ? print("要吃飯")
? ? ? ??
Bob = Person()

>>>
是一個(gè)人

【實(shí)例2】哪些需放入__ init__ ()方法中,哪些不需要???

需要在 __ init__ ()方法中定義:希望有一些操作是在創(chuàng)建實(shí)例的時(shí)候就自動(dòng)創(chuàng)建的。在神經(jīng)網(wǎng)絡(luò)代碼中,一些網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)置,也最好放在 __ init__ ()方法中。

在下述代碼中,我們把money這個(gè)屬性也定義在__ init__ ()方法中,這樣就不需要在執(zhí)行eat()方法后再執(zhí)行qian()方法。

class Person():
? ? def __init__(self, name,money):
? ? ? ? print("是一個(gè)人")
? ? ? ? self.name = name
? ? ? ? self.money = money

? ? def eat(self):
? ? ? ? print("%s要吃飯" % self.name)

? ? def qian(self):
? ? ? ? print("花了%s元" % self.money)


Bob = Person("Bob",12)
Bob.eat()
Bob.qian()

>>>
是一個(gè)人
Bob要吃飯
花了12元

到此這篇關(guān)于終于搞懂了Python中super(XXXX, self).__init__()的作用了的文章就介紹到這了,更多相關(guān)Python super(XXXX, self).__init__()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

辽宁省| 宝清县| SHOW| 武功县| 东光县| 隆林| 峨山| 晴隆县| 银川市| 柯坪县| 昌都县| 大新县| 金华市| 三河市| 庆城县| 新津县| 亳州市| 久治县| 玉溪市| 遂溪县| 五莲县| 专栏| 天柱县| 明光市| 奇台县| 邓州市| 抚宁县| 柳江县| 怀仁县| 广元市| 库尔勒市| 随州市| 西藏| 桐庐县| 比如县| 隆尧县| 平和县| 仙桃市| 麻江县| 米泉市| 历史|