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

簡述 Python 的類和對象

 更新時間:2020年08月21日 11:03:16   作者:奶糖貓  
這篇文章主要介紹了Python 的類和對象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

系列最后一篇來說說Python中的類與對象,Python這門語言是無處不對象,如果你曾淺要了解過Python,你應(yīng)該聽過Python是一種面向?qū)ο缶幊痰恼Z言,所以你經(jīng)??赡軙吹矫嫦颉皩ο蟆本幊踢@類段子,而面向?qū)ο缶幊痰恼Z言都會有三大特征:封裝、繼承、多態(tài)。

我們平時接觸到的很多函數(shù)、方法的操作都具有這些性質(zhì),我們只是會用,但還沒有去深入了解它的本質(zhì),下面就介紹一下關(guān)于類和對象的相關(guān)知識。

封裝

封裝這個概念應(yīng)該并不陌生,比如我們把一些數(shù)據(jù)封裝成一個列表,這就屬于數(shù)據(jù)封裝,我們也可以將一些代碼語句封裝成一個函數(shù)方便調(diào)用,這就是代碼的封裝,我們也可以將數(shù)據(jù)和代碼封裝在一起。用術(shù)語表示的話,就是可以將屬性和方法進(jìn)行封裝,從而得到對象。

首先我們可以定義一個類,這個類中有屬性和方法,但有的伙伴會比較好奇,屬性和方法不是會封裝成對象嘛,為什么又變成類了?舉個例子,類就好比是一個毛坯房,而對象是在毛坯房的基礎(chǔ)上改造成的精裝房。

class XiaoMing:
  #屬性
  height = 180
  weight = 65
  sex = '男'
  #方法
  def run(self):
    print('小明在跑步')
  def sleep(self):
    print('小明在睡覺')

在類定義完成時就創(chuàng)建了一個類對象,它是對類定義創(chuàng)建的命名空間進(jìn)行了一個包裝。類對象支持兩種操作:屬性引用和實(shí)例化。

屬性引用的語法就是一般的標(biāo)準(zhǔn)語法:obj.name。比如XiaoMing.height和XiaoMing.run就是屬性引用,前者會返回一條數(shù)據(jù),而后者會返回一個方法對象。

In[1]:print(XiaoMing.height)
Out[1]:180

In[2]:print(XiaoMing.run)
Out[2]:<function XiaoMing.run at 0x0000021C6239D0D0>

這里也支持對類屬性進(jìn)行賦值操作,比如為類中的weight屬性賦予一個新值。

In[3]:print(XiaoMing.weight)
Out[3]:65

In[4]:XiaoMing.weight = 100
In[5]:print(XiaoMing.weight)
Out[5]:100

而類的實(shí)例化可以將類對象看作成一個無參函數(shù)的賦值給一個局部變量,如下:

In[6]:ming = XiaoMing()

ming就是由類對象實(shí)例化后創(chuàng)建的一個實(shí)例對象,通過實(shí)例對象也可以調(diào)用類中的屬性和方法。

In[7]:ming.run()
Out[7]:小明在跑步

In[8]:print(xiaoming.height)
Out[8]:180
#通過向類對象調(diào)用方法返回的方法對象中傳入實(shí)例對象也可以達(dá)到同樣效果
In[11]:XiaoMing.run(ming)
Out[11]:小明在跑步

魔法方法__init__

類在實(shí)例化過程中并不都是像上面例子一樣簡單的,一般類都會傾向?qū)?shí)例對象創(chuàng)建為有初始狀態(tài)的,所以在類中可能會定義一個__init__的魔法方法,這個方法就可以幫助接收、傳入?yún)?shù)。

而一個類如果定義了__init__方法,那么在類對象實(shí)例化的過程中就會自動為新創(chuàng)建的實(shí)例化對象調(diào)用__init__方法,請看下面這個例子。

class Coordinates:
  def __init__(self,x,y):
    self.x = x
    self.y = y
  def print_coor(self):
    print('當(dāng)前坐標(biāo)為(%s,%s)'%(self.x,self.y))

可以看到在__init__()中傳入了參數(shù)x和y,然后在print_coor中需要接收參數(shù)x和y,接下來通過實(shí)例化這個類對象,驗(yàn)證一下參數(shù)是否能通過__init__()傳遞到類的實(shí)例化操作中。

In[9]:coor = Coordinates(5,3)
In[10]:coor.print_coor()

Out[10]:當(dāng)前坐標(biāo)為(5,3)

繼承

所謂繼承就是一個新類在另一個類的基礎(chǔ)上構(gòu)建而成,這個新類被稱作子類或者派生類,而另一個類被稱作父類、基類或者超類,而子類會繼承父類中已有的一些屬性和方法。

class Mylist(list):
  pass
list_ = Mylist()
list_.append(1)
print(list_)
''' [1] '''

比如上面這個例子,我并沒有將list_定義成一個列表,但它卻能調(diào)用append方法。原因是類Mylist繼承于list這個基類,而list_又是Mylist的一個實(shí)例化對象,所以list_也會擁有父類list擁有的方法。

當(dāng)然可以通過自定義類的形式實(shí)現(xiàn)兩個類之間的繼承關(guān)系,我們定義Parent和Child兩個類,Child中沒有任何屬性和方法,只是繼承于父類Parent。

class Parent:
  def par(self):
    print('父類方法')
class Child(Parent):
  pass
child = Child()
child.par()
'''
父類方法
'''

覆蓋

當(dāng)子類中定義了與父類中同名的方法或者屬性,則會自動覆蓋父類對應(yīng)的方法或?qū)傩?,還是用上面這個例子實(shí)現(xiàn)一下,方便理解。

class Parent:
  def par(self):
    print('父類方法')
class Child(Parent):
  def par(self):
    print('子類方法')
child = Child()
child.par()
'''
子類方法
'''

可以看到子類Child中多了一個和父類Parent同名的方法,再實(shí)例化子類并調(diào)用這個方法時,最后調(diào)用的是子類中的方法。
Python中繼承也允許多重繼承,也就是說一個子類可以繼承多個父類中的屬性和方法,但是這類操作會導(dǎo)致代碼混亂,所以大多數(shù)情況下不推薦使用,這里就不過多介紹了。

多態(tài)

多態(tài)比較簡單,比如定義兩個類,這兩個類沒有任何關(guān)系,只是兩個類中有同名的方法,而當(dāng)兩個類的實(shí)例對象分別調(diào)用這個方法時,不同類的實(shí)例對象調(diào)用的方法也是不同的。

class XiaoMing:
  def introduce(self):
    print("我是小明")
class XiaoHong:
  def introduce(self):
    print("我是小紅")

上面這兩個類中都有introduce方法,我們可以實(shí)例化一下兩個類,利用實(shí)例對象調(diào)用這個方法實(shí)現(xiàn)一下多態(tài)。

In[12]:ming = XiaoMing()
In[13]:hong = XiaoHong()

In[14]:ming.introduce()
Out[14]:我是小明

In[15]:hong.introduce()
Out[15]:我是小紅

常用BIF

1、issubclass(class,classinfo)

判斷一個類是否是另一個類的子類,如果是則返回True,反之則返回False。

class Parent:
  pass
class Child(Parent):
  pass
print(issubclass(Child,Parent))
'''
True
'''

需要注意的有兩點(diǎn):

  • 1.第二個參數(shù)不僅可以傳入類,也可以傳入由類組成的元組。
  • 2.一個類被判定為自身的子類,也就是說這兩個參數(shù)傳入同一個類時,也會返回True。
print(issubclass(Parent,Parent))
'''
True
'''

2、isinstance(object,classinfo)

判斷一個對象是否為一個類的實(shí)例對象,如果是則返回True,反之則返回False。

class Parent:
  pass
class Child:
  pass
p = Parent()
c = Child()
print(isinstance(p,Parent,Child))
#True
print(isinstance(c,Parent))
#False

需要注意的有兩點(diǎn):

  • 1.第二個參數(shù)不僅可以傳入類,也可以傳入由類組成的元組。
  • 2.如果第一個參數(shù)傳入的不是一個對象,則總是返回False。

3、hasattr(object,name)

判斷一個實(shí)例對象中是否包含一個屬性,如果是則返回True,反之則返回False。

class Parent:
  height = 100
p = Parent()
print(hasattr(p,'height'))
'''
True
'''

需要注意的是第二個參數(shù)name必須為字符串形式傳入,如果不是則會返回False。

以上就是簡述 Python 的類和對象的詳細(xì)內(nèi)容,更多關(guān)于Python 的類和對象的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python進(jìn)程,多進(jìn)程,獲取進(jìn)程id,給子進(jìn)程傳遞參數(shù)操作示例

    Python進(jìn)程,多進(jìn)程,獲取進(jìn)程id,給子進(jìn)程傳遞參數(shù)操作示例

    這篇文章主要介紹了Python進(jìn)程,多進(jìn)程,獲取進(jìn)程id,給子進(jìn)程傳遞參數(shù)操作,結(jié)合實(shí)例形式分析了Python多進(jìn)程、父子進(jìn)程以及進(jìn)程參數(shù)傳遞相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • python根據(jù)文本生成詞云圖代碼實(shí)例

    python根據(jù)文本生成詞云圖代碼實(shí)例

    這篇文章主要介紹了python根據(jù)文本生成詞云圖代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python操作日期和時間的方法

    python操作日期和時間的方法

    經(jīng)常獲得了一個用戶提交的當(dāng)前日期,我們需要以這個日期為依據(jù)返回它的前一天、后一天的日期或者轉(zhuǎn)換操作等。用Python可以非常簡單的解決這些關(guān)于日期計(jì)算的問題
    2014-03-03
  • Python可視化Matplotlib折線圖plot用法詳解

    Python可視化Matplotlib折線圖plot用法詳解

    這篇文章主要為大家介紹了Python可視化中Matplotlib折線圖plot用法的詳解,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步
    2021-09-09
  • 520必備!這些Python表白代碼祝你脫單成功

    520必備!這些Python表白代碼祝你脫單成功

    不會還有程序猿沒有女朋友吧?沒關(guān)系,今天特地為大家整理了這些Python花式表白代碼,你就放心大膽的去吧,需要的朋友可以參考下
    2021-05-05
  • 詳解如何用Python模擬登錄淘寶

    詳解如何用Python模擬登錄淘寶

    最近想爬取淘寶的一些商品,但是發(fā)現(xiàn)如果要使用搜索等一些功能時基本都需要登錄,所以就想出一篇模擬登錄淘寶的文章!本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Python函數(shù)和模塊的使用總結(jié)

    Python函數(shù)和模塊的使用總結(jié)

    在本文中小編給大家整理了關(guān)于Python函數(shù)和模塊的使用的相關(guān)知識點(diǎn)以及實(shí)例代碼內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • 用Python做一個嗶站小姐姐詞云跳舞視頻

    用Python做一個嗶站小姐姐詞云跳舞視頻

    這篇文章主要介紹了用Python做一個嗶站小姐姐詞云跳舞視頻, 本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python在linux中輸出帶顏色的文字的方法

    python在linux中輸出帶顏色的文字的方法

    這篇文章主要介紹了python在linux中輸出帶顏色的文字的方法,僅在Linux系統(tǒng)中有效果,一般輸出在控制臺中,本文用在日志環(huán)節(jié),方便測試,需要的朋友可以參考下
    2014-06-06
  • python使用socket實(shí)現(xiàn)圖像傳輸功能

    python使用socket實(shí)現(xiàn)圖像傳輸功能

    這篇文章主要為大家詳細(xì)介紹了python使用socket實(shí)現(xiàn)圖像傳輸功能,linux服務(wù)器與win10主機(jī)間的圖像傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論