溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python的類(lèi)是什么

發(fā)布時(shí)間:2021-11-05 16:07:37 來(lái)源:億速云 閱讀:168 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“Python的類(lèi)是什么”,在日常操作中,相信很多人在Python的類(lèi)是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)ython的類(lèi)是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

  高級(jí)語(yǔ)言都有面對(duì)對(duì)象,Python也不例外,比起c++,java這些傳統(tǒng)的語(yǔ)言,Python中的面對(duì)對(duì)象去掉了很多復(fù)雜的東西,理解和使用起來(lái)更簡(jiǎn)單一些。

  一般來(lái)說(shuō)面對(duì)對(duì)象包含:數(shù)據(jù)封裝、繼承和多態(tài)這三大特點(diǎn)。

  1.類(lèi)和類(lèi)的實(shí)例

  類(lèi)其實(shí)是一種數(shù)據(jù)結(jié)構(gòu),我們可以用它來(lái)定義對(duì)象,一個(gè)類(lèi)會(huì)包含屬性和行為特性.類(lèi)是現(xiàn)實(shí)世界抽象的實(shí)體以編程形式出現(xiàn)。

  python中類(lèi)的聲明用class關(guān)鍵字來(lái)命名。

  python類(lèi)分為兩種:經(jīng)典類(lèi)(舊類(lèi)),新式類(lèi).新式類(lèi)主要是從Python2.2以后開(kāi)始引入的,目前主要以用新式類(lèi)為主(Python 3.x中默認(rèn)都是新式類(lèi))。

  也許同學(xué)會(huì)問(wèn)為啥有新式類(lèi)的出現(xiàn)(主要的差別在于類(lèi)內(nèi)置屬性,多重繼承的搜索順序和父類(lèi)初始化)。

  類(lèi)的對(duì)象實(shí)例聲明很簡(jiǎn)單,實(shí)現(xiàn)實(shí)例化的方法,就是像調(diào)用函數(shù)一樣地調(diào)用一個(gè)類(lèi)。

  2.類(lèi)的初始化

  類(lèi)的初始化函數(shù)是用__init__來(lái)完成的,也許有的同學(xué)有c++,java基礎(chǔ)的,覺(jué)得它和構(gòu)造函數(shù)很像。

  確實(shí)很像,注意注意注意__init__()不是類(lèi)的構(gòu)造函數(shù),只是用來(lái)做初始化的。

  這個(gè)特殊名字的__init__()方法,用于創(chuàng)建類(lèi)的實(shí)例,Python調(diào)用這個(gè)特殊的方法,并使用傳入的參數(shù)( 除了self,你不用顯式傳遞這個(gè)參數(shù),Python自動(dòng)提供)來(lái)初始化一個(gè)新建的實(shí)例。

  今天這篇只是揭露類(lèi)的表層,等后面慢慢熟悉了之后,深入揭露類(lèi)的本質(zhì)的時(shí)候,我會(huì)告訴大家為什么它不是構(gòu)造函數(shù),只是初始化函數(shù)。

  1).當(dāng)Dog類(lèi)聲明一個(gè)dog_obj對(duì)象實(shí)例的時(shí)候,Python會(huì)自動(dòng)去檢查時(shí)候?qū)崿F(xiàn)了__init__()方法,做一些實(shí)例對(duì)象的初始化工作。

  2).有細(xì)心的小伙伴會(huì)問(wèn)為啥這個(gè)__init__()函數(shù)長(zhǎng)的這么奇怪,要有雙下劃線(xiàn)開(kāi)頭,哇你會(huì)搶答了,這個(gè)在Python中有特殊的含義.用來(lái)一些命名約定來(lái)進(jìn)行訪(fǎng)問(wèn)控制。

  3).又有同學(xué)會(huì)問(wèn)self是啥,這個(gè)參數(shù)是Python特有的,當(dāng)__init__()被調(diào)用的時(shí)候,實(shí)例對(duì)象作為第一個(gè)參數(shù)被傳遞了進(jìn)去,相同于java里面的this.也就是說(shuō)self其實(shí)就是類(lèi)的對(duì)象地址。

  3.類(lèi)的刪除

  類(lèi)既然有初始化,就一定有刪除,有進(jìn)就有出,python里面用一個(gè)__del__()來(lái)負(fù)責(zé)清理類(lèi)的對(duì)象。

  當(dāng)這個(gè)對(duì)象沒(méi)有人用了就會(huì)被清理掉.有同學(xué)會(huì)問(wèn)~~我怎么知道什么時(shí)候?qū)ο鬀](méi)有人用了,聰明Python用引用計(jì)數(shù)的方法來(lái)追蹤。

  引用一次加1,當(dāng)引用計(jì)數(shù)為0的時(shí)候,python內(nèi)置了一個(gè)垃圾對(duì)象回收機(jī)制,一旦計(jì)數(shù)為0就清理對(duì)象就會(huì)去調(diào)用類(lèi)里面的__del__()方法.是不是很智能,其實(shí)java也內(nèi)置了這樣的功能。

  4.類(lèi)的屬性

  類(lèi)里面定義。

  類(lèi)的初始化函數(shù)里面定義。

  先來(lái)說(shuō)說(shuō)類(lèi)里面定義,有一個(gè)Student類(lèi),里面有name和age屬性。

  class Student(object):

  name='wang'

  age=10

  name,age都是Student類(lèi)的屬性,所以Student的對(duì)象實(shí)例都共享name,age

  換句話(huà)說(shuō)你的s1,s2兩個(gè)對(duì)象里面的name,age都是一樣的,不信你看:

  再來(lái)看看對(duì)象的屬性,都是在__init__()函數(shù)里面聲明的,也就是self.name ,self.age都是對(duì)象的屬性。

  5.類(lèi)中的方法

  類(lèi)中的方法有是哪個(gè):實(shí)例方法;類(lèi)的方法;類(lèi)的靜態(tài)函數(shù)。

到此,關(guān)于“Python的類(lèi)是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI