用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?
python 類中一定需要有 __init?__方法么?沒有的會怎樣?
在回答這個問題之前,先說兩個問題:
① 面向?qū)ο缶幊?#xff1f;
② 什么是類?
面向?qū)ο?/strong>,先上一個正式點的解釋:
“把一組數(shù)據(jù)結(jié)構(gòu)和處理它們的方法組成對象(object),把相同行為的對象歸納為類(class),通過類的封裝(encapsulation)隱藏內(nèi)部細節(jié),通過繼承(inheritance)實現(xiàn)類的特化(specialization)和泛化(generalization),通過多態(tài)(polymorphism)實現(xiàn)基于對象類型的動態(tài)分派。”
感覺看的云里霧里的。。。。
接下來看看通俗易懂的,面向?qū)ο笫窍鄬τ诿嫦蜻^程而提出的程序設(shè)計思想,面向?qū)ο蟮娜筇卣?#xff1a;封裝、繼承、多態(tài)。
再來看一個有趣的例子,來自知乎:
不要被標題迷惑,寫的挺貼切,客觀的,每種方法都有利有弊,致勝的法寶永遠都是實際情況實際分析。文中雖然沒用python做例子,但是本質(zhì)和原理的東西是不變的,與用什么語言無關(guān)。
說明: 以上的內(nèi)容來自于網(wǎng)絡(luò),不代表作者本人的觀點和看法,與作者本人立場無關(guān),相關(guān)責(zé)任不由作者承擔(dān)。
什么是–類?
類是對現(xiàn)實事物的抽象,例如人類,人有男人、女人,但概念還是太大,需要繼續(xù)抽象,思考一下人(不論男女)正常情況都有什么特征,例如名字、性別等固定的特征,一般用名詞來限定(屬性),有什么行為,例如人會吃飯、看電影、上廁所等行為(方法),一般用動詞來描述,我們將屬性和方法給抽象出來(一定是普遍的,共有的,非特指或小范圍的),就構(gòu)成了人類這個"類"(Class)。
現(xiàn)在來回答開始時提出的問題:python 類中一定需要有 __init?__方法么?沒有的會怎樣?
我們已經(jīng)知道了,類是由屬性和方法構(gòu)成的,python類中用__init__方法(也可理解為初始化方法)來定義屬性,在實例化一個對象時,會先調(diào)用__init__方法,將這個類所具有的相關(guān)屬性賦予這個對象,然后我們通過這個對象,就可以直接訪問他所具有的屬性。
還是人類這個例子,看下面的代碼:
class Person():#定義一個類def __init__(self,name,gender):#人有名字self.name = name#人有性別self.gender = genderdef eat(self):#人需要吃飯,所以定義一個吃飯的方法print("%s正在吃飯,有啥事吃完再說。。。"% self.name)def watch_movie(self,movie_name):#還需要娛樂,所以定義可以看電影的方法print("{}正在看{},這部電影!".format(self.name, movie_name))def go_wc(self):#人還需要上廁所,不然憋死了,所以定義一個上廁所的方法if self.gender == "男":#男的上男廁所,進錯了就是耍流氓,女的就是進錯了。。。哈哈公平何在print("{}要進{}廁所。。。不然就是耍流氓".format(self.name,self.gender) )if self.gender == "女":print("{}要進{}廁所。。。不然就是走錯了".format(self.name,self.gender))if __name__ == "__main__":#實例化一個人person1 = Person("小明","男")#查看這個人的名字print(person1.name)#查看這個人的性別print(person1.gender)#調(diào)用吃飯這個方法,確保不被餓死person1.eat()#吃完可以看看電影person1.watch_movie("色即是空")#看電影過程中可能需要上廁所person1.go_wc()
再看一下下面的代碼:
轉(zhuǎn)載鏈接:
https://blog.csdn.net/qq_30597401/article/details/108409239
總結(jié)
以上是生活随笔為你收集整理的用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HRBUST - 1623】Relat
- 下一篇: 马斯克疯狂输出20分钟:特斯拉不设对手