欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

我們先看一個(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類(lèi)繼承Person類(lèi) ? ? ? ?

class Stu(Person):
? ? def __init__(self, name, gender, school):
? ??
? ? ? ? # 使用父類(lèi)的初始化方法來(lái)初始化子類(lèi)name和gender屬性
? ? ? ? super(Stu, self).__init__(name, gender) ?
? ? ? ??
? ? ? ? self.school = school
? ? ? ??
? ? def printinfo(self): ??
? ? ?? ?# 對(duì)父類(lèi)的printinfo方法進(jìn)行重寫(xiě)
? ? ? ?
? ? ? ? print(self.name, self.gender, self.school)?


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

>>>
Bob female 5th

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

class Person(object):
? ? def __init__(self, name, gender, age):
? ? ? ? self.name = name
? ? ? ? self.gender = gender
? ? ? ? self.age = age
? ? ? ??
# Student類(lèi)繼承Person類(lèi)
class Student(Person):
? ? def __init__(self, name, gender, age, school, score):
? ??
? ? ?? ?# 調(diào)用父類(lèi)的初始化方法,初始化name、gender、age屬性
? ? ? ? super(Student, self).__init__(name,gender, age)
? ? ? ??
? ? ? ? # 對(duì)name、gender屬性進(jìn)行改寫(xiě)。age屬性仍保持父類(lèi)的初始化方法
? ? ? ??
? ? ? ? self.name = name.upper() ?# 姓名改為大寫(xiě)
? ? ? ? self.gender = gender.upper() ?# 性別改為大寫(xiě)
? ? ? ? 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()的含義:子類(lèi)Net類(lèi)繼承父類(lèi)nn.Module,super(Net, self).init()就是對(duì)繼承自父類(lèi)nn.Module的屬性進(jìn)行初始化。并且是用nn.Module的初始化方法來(lái)初始化繼承的屬性。

也就是:用父類(lèi)的方法初始化子類(lèi)的屬性。

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

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

在python中創(chuàng)建類(lèi)后,通常會(huì)創(chuàng)建一個(gè) init__ ()方法,這個(gè)方法會(huì)在創(chuàng)建類(lèi)的實(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__ ()方法,比如說(shuō)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)文章

  • 使用systemd部署服務(wù)的過(guò)程解析

    使用systemd部署服務(wù)的過(guò)程解析

    這篇文章主要介紹了使用systemd部署服務(wù)的過(guò)程解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • python實(shí)現(xiàn)AdaBoost算法的示例

    python實(shí)現(xiàn)AdaBoost算法的示例

    這篇文章主要介紹了python實(shí)現(xiàn)AdaBoost算法的示例,幫助大家更好的理解和了解機(jī)器學(xué)習(xí)算法,感興趣的朋友可以了解下
    2020-10-10
  • python列表推導(dǎo)式操作解析

    python列表推導(dǎo)式操作解析

    這篇文章主要介紹了python列表推導(dǎo)式操作解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python中Iterator迭代器的使用雜談

    Python中Iterator迭代器的使用雜談

    Python中的迭代器意義不僅是在iter函數(shù)上的運(yùn)用,更是一種處理可迭代對(duì)象的迭代器模式,這里我們來(lái)簡(jiǎn)單聊聊Python中Iterator迭代器的使用雜談:
    2016-06-06
  • python實(shí)現(xiàn)數(shù)據(jù)圖表

    python實(shí)現(xiàn)數(shù)據(jù)圖表

    plotly是現(xiàn)代平臺(tái)的敏捷商業(yè)智能和數(shù)據(jù)科學(xué)庫(kù),它作為一款開(kāi)源的繪圖庫(kù),可以應(yīng)用于Python、R、MATLAB、Excel、JavaScript和jupyter等多種語(yǔ)言,主要使用的js進(jìn)行圖形繪制,實(shí)現(xiàn)過(guò)程中主要就是調(diào)用plotly的函數(shù)接口,底層實(shí)現(xiàn)完全被隱藏,便于初學(xué)者的掌握。
    2017-07-07
  • python使用for循環(huán)和海龜繪圖實(shí)現(xiàn)漂亮螺旋線

    python使用for循環(huán)和海龜繪圖實(shí)現(xiàn)漂亮螺旋線

    這篇文章主要為大家介紹了python使用for循環(huán)和海龜繪圖實(shí)現(xiàn)漂亮螺旋線實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python實(shí)現(xiàn)記事本功能

    python實(shí)現(xiàn)記事本功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)記事本功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python字符串格式化的方法(兩種)

    Python字符串格式化的方法(兩種)

    這篇文章主要介紹了Python字符串格式化的方法(兩種) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Python實(shí)現(xiàn)PC屏幕截圖并自動(dòng)發(fā)送郵件

    Python實(shí)現(xiàn)PC屏幕截圖并自動(dòng)發(fā)送郵件

    在當(dāng)前的數(shù)字化世界中,自動(dòng)化已經(jīng)成為我們?nèi)粘I詈凸ぷ髦械年P(guān)鍵部分,本文我們將探討如何使用Python來(lái)實(shí)現(xiàn)一個(gè)特定的自動(dòng)化任務(wù) - PC屏幕截圖自動(dòng)發(fā)送到指定的郵箱,感興趣的可以了解下
    2023-11-11
  • django認(rèn)證系統(tǒng) Authentication使用詳解

    django認(rèn)證系統(tǒng) Authentication使用詳解

    這篇文章主要介紹了django認(rèn)證系統(tǒng) Authentication使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論