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

一文掌握python中的__init__的意思及使用場(chǎng)景分析

 更新時(shí)間:2023年02月10日 11:14:24   作者:/*守護(hù)她的笑容  
__init__是構(gòu)造方法,誰(shuí)調(diào)用,表示誰(shuí)(更直觀的理解就是類(lèi)的方法中,誰(shuí)調(diào)用,表示誰(shuí),見(jiàn)下面第一個(gè)代碼)??!并不是必選項(xiàng),也就是說(shuō)在類(lèi)中,這個(gè)不是必須用的,那什么場(chǎng)景需要用到,什么場(chǎng)景不需要用到呢,感興趣的朋友跟隨小編一起看看吧

__init__解釋

__init__是構(gòu)造方法,誰(shuí)調(diào)用,表示誰(shuí)(更直觀的理解就是類(lèi)的方法中,誰(shuí)調(diào)用,表示誰(shuí),見(jiàn)下面第一個(gè)代碼)??!并不是必選項(xiàng),也就是說(shuō)在類(lèi)中,這個(gè)不是必須用的,那什么場(chǎng)景需要用到,什么場(chǎng)景不需要用到呢,下面會(huì)做說(shuō)明!
下面代碼是最基本的類(lèi)定義代碼:

class Person:
    def __init__(self, name, age):
        self.name = name
#self.name,這里的name并不是 def __init__里面的name,這個(gè)name可以自定義,但=后面的name就是__init__里面的name了
        self.age = age
	def test(self):
	#誰(shuí)調(diào)用表示誰(shuí),就是這種情況,這個(gè)test方法調(diào)用了這個(gè)類(lèi)中init的name和age,也就是說(shuō)這個(gè)類(lèi)的name和age表示為test方法
	print(self.name,self,age)

class關(guān)鍵字后面跟類(lèi)的名稱就定義了一個(gè)類(lèi),類(lèi)的名稱可以任意,采用駝峰命名法,也即每個(gè)單詞的首字母大寫(xiě),如Book、Person、WildAnimal等
這里的__init__方法是一個(gè)特殊的方法(init是單詞初始化initialization的省略形式),在使用類(lèi)創(chuàng)建對(duì)象之后被執(zhí)行,用于給新創(chuàng)建的對(duì)象初始化屬性用。
初始化屬性的語(yǔ)句就是self.name = name這種了,這一句不太好理解,我們把它改編一下就好理解了:

def __init__(self, n, a):
    self.name = n
    self.age = a

首先這是一個(gè)方法,方法的形參有self,n和a三個(gè)。
這個(gè)self,表示對(duì)象本身,誰(shuí)調(diào)用,就表示誰(shuí)(這句話不好理解,先記住,我們后面分析)。
語(yǔ)法上,類(lèi)中的方法的第一個(gè)參數(shù)都是self,這是和普通方法區(qū)別的地方。
這里self.name = nself.age = a表示將外部傳來(lái)的n和a,賦值給了self對(duì)象的name和age屬性。
這里的n和a,其實(shí)叫什么都可以,但是會(huì)有個(gè)問(wèn)題:一般我們調(diào)用方法的時(shí)候,想自動(dòng)提示一下或者查看文檔看一下這個(gè)方法的參數(shù)要求,如果形參名都是n、a、m、i這些,會(huì)讓人摸不著頭腦,不知道到底該傳入什么樣的實(shí)參。因?yàn)檫@里我們傳入實(shí)參是為了給屬性賦值,為了能見(jiàn)名知意,將形參的名字定義的跟屬性一致,調(diào)用者就知道該怎么傳參了。
所以才有了上面的寫(xiě)法。
再來(lái)說(shuō)創(chuàng)建對(duì)象:
p = Person('小明', 20)
這句話就創(chuàng)建出來(lái)了一個(gè)具體的人,并且給這個(gè)人起了個(gè)名字叫小明,指定了小明的年齡為20,并且將小明這個(gè)對(duì)象賦值給了變量p,此時(shí)p就表示小明這個(gè)人(對(duì)象)
這就造出了一個(gè)人。
注:這里的小明和20并不是任意創(chuàng)造的,而是在Person這個(gè)函數(shù)中定義了2個(gè)參數(shù)(name,age),所以這必須實(shí)例化2個(gè)參數(shù)??! 另外,在重復(fù)一下這個(gè)流程吧:定義類(lèi)(class )-創(chuàng)建方法(對(duì)象)(def)——創(chuàng)建實(shí)例(綁定屬性)(p=類(lèi)名)——傳參(有init的不需要單獨(dú)傳參)-調(diào)用
代碼如下:

# 定義一個(gè)類(lèi),使用class關(guān)鍵字
class Student:
    pass # 暫時(shí)不賦值

#創(chuàng)建類(lèi)的對(duì)象
stu1 = Student() # 創(chuàng)建Student類(lèi)的一個(gè)實(shí)例
stu2 = Student()
print(stu1,'自定義類(lèi)型type:',type(stu1))
print(stu2,'自定義類(lèi)型type:',type(stu2))
# 為對(duì)象綁定屬性 (注:需要先給類(lèi)創(chuàng)建實(shí)例)
stu1.name = 'ccx'
stu1.age = 22
stu2.name = 'xgq'
stu2.age = 23
stu2.sex = 'woman'
# 調(diào)用
print('stu1的參數(shù):',stu1.name,stu1.age) #打印stu1的參數(shù)
print('stu2的參數(shù):',stu2.name,stu2.sex,stu2.age) # 打印stu2的參數(shù)

插入:這里就是人們常常調(diào)侃的,程序員不需要女朋友,如果需要,就給自己創(chuàng)建一個(gè)對(duì)象,不,最少要?jiǎng)?chuàng)建10個(gè)對(duì)象?。?! 對(duì)象就是傳的參
就是這樣:

#創(chuàng)建類(lèi)
class GirlFriend :
	#創(chuàng)建方法
	def __init__(self,num,name,age,features):
		#初始化參數(shù)
		self.num=num
		self.name=name
		self.age=age
		self.features=features
	def MyGirlFriend(self):
		print('我的第',self.num,'個(gè)女朋友,名字叫',self.name,',她今年',self.age,'歲了,特征是:',self.features,'!!!!',sep='')
# 定義對(duì)象
gf1=GirlFriend(1,'劉亦菲',24,'漂亮的臉蛋性感的身材')
gf2=GirlFriend(2,'楊冪',23,'有讓人陶醉的聲音')
gf3=GirlFriend(3,'湯唯',24,'喜歡沒(méi)道理')
#調(diào)用
gf1.MyGirlFriend()
gf2.MyGirlFriend()
gf3.MyGirlFriend()

用__init__與不用__init__對(duì)比

__init__直接輸出(不建議這么用)

這種構(gòu)造方法,在創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用, 不需要單獨(dú)調(diào)用該方法! 不建議這么用

class ClassName(object):
	def __init__(self, name):
# 必須要初始化值
		self.name=name
		print('ClassName:',self.name,'in run')
p=ClassName('xgq')

在這里插入圖片描述

__init__普通用法

init只是用來(lái)初始化值,但都需要新定義方法來(lái)返回這個(gè)參數(shù)?。?!

class ClassName(object):
	def __init__(self, name):
		self.name=name
	def run(self):
		print('ClassName_run:',self.name,'in run')
p=ClassName('xgq')
p.run()

在這里插入圖片描述

不用__init__

#定義類(lèi)
class Person:
	#定義方法
	def test(self,name):
		print('name is :',self.name,'~!!!')
#定義對(duì)象
p=Person()
#傳參
p.name='ccx'
#調(diào)用
p.test('xgq')

在執(zhí)行結(jié)果中可以看出,用了init就需要在定義對(duì)象的時(shí)候就賦值,而不用init的話,是不需要再定義對(duì)象的時(shí)候就賦值,需要單獨(dú)傳參,但是因?yàn)樵趖est中定義了name,所以在調(diào)用的時(shí)候,也需要傳一個(gè)參數(shù),但如果不用init,在調(diào)用的時(shí)候傳參,是沒(méi)有任何意義的,因?yàn)轭?lèi)中的方法默認(rèn)接受的參數(shù)是單獨(dú)定義的參數(shù),而不是是調(diào)用的時(shí)候傳的參?。?!

在這里插入圖片描述

總結(jié)

反正你需要知道的是,__init__是構(gòu)造方法,在創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用,而且構(gòu)造方法(函數(shù)),不支持重載,如果需要給這個(gè)類(lèi)定義參數(shù),就需要用init,反正就不需要用!

下面我給一個(gè) 子類(lèi)繼承父類(lèi)的方法,如果不用init你可以自行嘗試是什么結(jié)果!!

#定義一個(gè)Person類(lèi),父類(lèi)(超類(lèi),基類(lèi))
class Person:
    def __init__(self,name): # 定義私有類(lèi)
        self.name = name
    def run(self):#定義一個(gè)類(lèi)函數(shù)
        print('person:'+ self.name+'正在奔跑啊啊啊')

class Student(Person): #繼承自Person
    def __init__(self,name,set,age):# 定義私有類(lèi)
        #調(diào)用父類(lèi)的構(gòu)造方法
       # Person.__init__(name) # 方式一:直接指定父類(lèi)的構(gòu)造方法
        super().__init__(name)# 方式二:使用super(),推薦使用該方法
        # 自己類(lèi)中的構(gòu)造方法且父類(lèi)中沒(méi)有的,直接定義即可
        self.set = set
        self.age = age
    def study(self): #定義一個(gè)類(lèi)函數(shù)
        print('stadent:' + self.name + '正在學(xué)習(xí)。。。。')
    def show(self):#定義一個(gè)類(lèi)函數(shù)
        print('name:%s , set:%s,age:%s'%(self.name,self.set,self.age))
    #可以自定義n個(gè)類(lèi)函數(shù) 。。。

stu = Student('ccx','man',22)
stu.run() #因?yàn)槔^承了父類(lèi),當(dāng)然也可以直接調(diào)用父類(lèi)函數(shù)
stu.study()
stu.show()

到此這篇關(guān)于一文搞懂python中的__init__的意思及使用場(chǎng)景的文章就介紹到這了,更多相關(guān)python中的__init__使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python鍵盤(pán)輸入轉(zhuǎn)換為列表的實(shí)例

    Python鍵盤(pán)輸入轉(zhuǎn)換為列表的實(shí)例

    今天小編就為大家分享一篇Python鍵盤(pán)輸入轉(zhuǎn)換為列表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python正則表達(dá)式匹配中文用法示例

    Python正則表達(dá)式匹配中文用法示例

    這篇文章主要介紹了Python正則表達(dá)式匹配中文用法,結(jié)合實(shí)例形式分析了Python針對(duì)中文的正則與文件操作相關(guān)技巧,需要的朋友可以參考下
    2017-01-01
  • PyCharm創(chuàng)建Django項(xiàng)目的簡(jiǎn)單步驟記錄

    PyCharm創(chuàng)建Django項(xiàng)目的簡(jiǎn)單步驟記錄

    PyCharm是一種Python?IDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具,下面這篇文章主要給大家介紹了關(guān)于利用PyCharm創(chuàng)建Django項(xiàng)目的簡(jiǎn)單步驟,需要的朋友可以參考下
    2022-07-07
  • Django用戶注冊(cè)并自動(dòng)關(guān)聯(lián)到某數(shù)據(jù)表?xiàng)l目的實(shí)現(xiàn)步驟

    Django用戶注冊(cè)并自動(dòng)關(guān)聯(lián)到某數(shù)據(jù)表?xiàng)l目的實(shí)現(xiàn)步驟

    當(dāng)一個(gè)新用戶注冊(cè)并且你想要自動(dòng)關(guān)聯(lián)到特定的Box條目(假設(shè)其ID為1)時(shí),下面給大家分享完整實(shí)現(xiàn)流程和步驟,對(duì)Django關(guān)聯(lián)數(shù)據(jù)表?xiàng)l目實(shí)現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧
    2017-04-04
  • python3如何清除過(guò)濾emoji表情

    python3如何清除過(guò)濾emoji表情

    這篇文章主要介紹了python3如何清除過(guò)濾emoji表情問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Win10+GPU版Pytorch1.1安裝的安裝步驟

    Win10+GPU版Pytorch1.1安裝的安裝步驟

    這篇文章主要介紹了Win10+GPU版Pytorch1.1安裝的安裝步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python實(shí)現(xiàn)遍歷包含大量文件的文件夾

    Python實(shí)現(xiàn)遍歷包含大量文件的文件夾

    在處理大模型的訓(xùn)練數(shù)據(jù)時(shí),經(jīng)常需要遍歷大型文件夾,其中,可能包括數(shù)千萬(wàn)或數(shù)億個(gè)文件,所以本文為大家整理了Python遍歷包含大量文件的文件夾的方法,希望對(duì)大家有所幫助
    2023-04-04
  • python實(shí)現(xiàn)用戶答題功能

    python實(shí)現(xiàn)用戶答題功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)用戶答題功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Django解決CORS跨域問(wèn)題的方案

    Django解決CORS跨域問(wèn)題的方案

    Cross-Origin Resource Sharing(CORS) 跨域問(wèn)題,在前后端后離項(xiàng)目,selenium , playweight 自動(dòng)化測(cè)試代碼中經(jīng)常遇到,本文給大家介紹了Django解決CORS跨域問(wèn)題的方案,文中有詳細(xì)的代碼講解,需要的朋友可以參考下
    2024-03-03
  • Python低層多線程接口_thread模塊的用法和特性

    Python低層多線程接口_thread模塊的用法和特性

    這篇文章主要介紹了Python低層多線程接口_thread模塊的用法和特性,_thread是python標(biāo)準(zhǔn)庫(kù)中的一個(gè)低層多線程API,可以在進(jìn)程中啟動(dòng)線程來(lái)處理任務(wù),并且提供了簡(jiǎn)單的鎖機(jī)制來(lái)控制共享資源的同步訪問(wèn),本文就_thread模塊的用法和特性做個(gè)簡(jiǎn)單的演示,需要的朋友可以參考下
    2024-10-10

最新評(píng)論