用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?
python 類中一定需要有 __init?__方法么?沒有的會怎樣?
在回答這個問題之前,先說兩個問題:
① 面向對象編程?
② 什么是類?
面向對象,先上一個正式點的解釋:
“把一組數據結構和處理它們的方法組成對象(object),把相同行為的對象歸納為類(class),通過類的封裝(encapsulation)隱藏內部細節,通過繼承(inheritance)實現類的特化(specialization)和泛化(generalization),通過多態(polymorphism)實現基于對象類型的動態分派?!?/p>
感覺看的云里霧里的。。。。
接下來看看通俗易懂的,面向對象是相對于面向過程而提出的程序設計思想,面向對象的三大特征:封裝、繼承、多態。
再來看一個有趣的例子,來自知乎:
不要被標題迷惑,寫的挺貼切,客觀的,每種方法都有利有弊,致勝的法寶永遠都是實際情況實際分析。文中雖然沒用python做例子,但是本質和原理的東西是不變的,與用什么語言無關。
說明: 以上的內容來自于網絡,不代表作者本人的觀點和看法,與作者本人立場無關,相關責任不由作者承擔。
什么是–類?
類是對現實事物的抽象,例如人類,人有男人、女人,但概念還是太大,需要繼續抽象,思考一下人(不論男女)正常情況都有什么特征,例如名字、性別等固定的特征,一般用名詞來限定(屬性),有什么行為,例如人會吃飯、看電影、上廁所等行為(方法),一般用動詞來描述,我們將屬性和方法給抽象出來(一定是普遍的,共有的,非特指或小范圍的),就構成了人類這個"類"(Class)。
現在來回答開始時提出的問題:python 類中一定需要有 __init?__方法么?沒有的會怎樣?
我們已經知道了,類是由屬性和方法構成的,python類中用__init__方法(也可理解為初始化方法)來定義屬性,在實例化一個對象時,會先調用__init__方法,將這個類所具有的相關屬性賦予這個對象,然后我們通過這個對象,就可以直接訪問他所具有的屬性。
還是人類這個例子,看下面的代碼:
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)#調用吃飯這個方法,確保不被餓死person1.eat()#吃完可以看看電影person1.watch_movie("色即是空")#看電影過程中可能需要上廁所person1.go_wc()
再看一下下面的代碼:
轉載鏈接:
https://blog.csdn.net/qq_30597401/article/details/108409239
總結
以上是生活随笔為你收集整理的用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HRBUST - 1623】Relat
- 下一篇: 马斯克疯狂输出20分钟:特斯拉不设对手