導航:首頁 > 編程語言 > python判斷子類父類

python判斷子類父類

發布時間:2023-06-09 08:07:48

1. python入門教程

Python語言是一種典型的腳本語言,簡潔,語法約束少,接近人類語言。有豐富的數據結構,例如列表、字典、集合等。具有可移植性,支持面向過程和面向對象編程,並且開源。
下載安裝:從python官網下載開發和運行環境程序。本例下載python-3.3.3.amd64的安裝包,並安裝。
開發工具:window系統中,python有多種開發工具,比如,一、直接在cmd命令窗口執行,但此種僅能單條語句執行,不能運行完整的程序。二、python自帶的集成開發環境,可通過開始——所有程序——python3.3——IDLE(Python GUI)啟動。三、其他集成開發環境,如PythonWin等,有編輯和調試能力,還實現了MFC類庫存的包裝。
本例中,使用python自帶的開發環境。File—New File,新建py文檔,編寫程序,保存。Run——Run mole,可得到運行結果。
封裝性:可以把屬性、方法結合在一起,不可以直接訪問對象的屬性,僅能通過介面與對象發生聯系。以下把方法和屬性封裝成了一個類。
構造器:python有3種類型的構造器,且一個類中僅可以定義一個構造器,若多個,則以最後為准。1.若不聲明,則默認為一個沒有任何操作的特殊的__init__方法,__init__(self),此時可通過obj = my_class()聲明實例。 2.自聲明__init__構造器,會覆蓋默認的,且可以更新類的數據屬性。3.構造器方法__new__(),用於不可變內置類型派生,不能通過實例訪問屬性,僅能通過類訪問。
繼承性:python支持多繼承,且子類繼承了父類的方法和屬性。若子類中有和父類相同名稱的方法,則子類會覆蓋(Override)父類方法。父類方法依舊可以訪問。
數據結構:有豐富的數據結構,例如列表、字典、集合等。本例簡單介紹字典的使用。字典是鍵值對的無序集合,是可變對象。鍵在字典中是唯一的且必須是不可變對象。值可以是可變對象或不可變對象。以下例子對python字典的定義、訪問、更新等的操作。
文件的讀寫:python系統提供open()函數建立文件對象,並打開要讀寫的文件。可對文件進行讀,寫,若不需要時,需關閉文件,釋放系統資源。
其他:python的數據類型,如數字類型、字元串類型等。運算符、程序控制結構、函數、異常處理等內容。一些基本的用法,可在平時的使用中鞏固加強。若熟知java,python上手會很快。

2. Python的類和對象入門

本文來說說Python中的類與對象,Python這門語言是無處不對象,如果你曾淺要了解過Python,你應該聽過Python是一種面向對象編程的語言,所以你經常可能會看到面向「對象」編程這類段子,而面向對象編程的語言都會有三大特徵:封裝、繼承、多態。

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

封裝這個概念應該並不陌生,比如我們把一些數據封裝成一個列表,這就屬於數據封裝,我們也可以將一些代碼語句封裝成一個函數方便調用,這就是代碼的封裝,我們也可以將數據和代碼封裝在一起。用術語表示的話,就是可以將屬性和方法進行封裝,從而得到對象。

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

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

屬性引用的語法就是一般的標准語法:obj.name。比如XiaoMing.height和XiaoMing.run就是屬性引用,前者會返回一條數據,而後者會返回一個方法對象。

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

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

ming就是由類對象實例化後創建的一個實例對象,通過實例對象也可以調用類中的屬性和方法。

類在實例化過程中並不都是像上面例子一樣簡單的,一般類都會傾向將實例對象創建為有初始狀態的,所以在類中可能會定義一個__init__的魔法方法,這個方法就可以幫助接收、傳入參數。

而一個類如果定義了__init__方法,那麼在類對象實例化的過程中就會自動為新創建的實例化對象調用__init__方法,請看下面這個例子。

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

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

比如上面這個例子,我並沒有將list_定義成一個列表,但它卻能調用append方法。原因是類Mylist繼承於list這個基類,而list_又是Mylist的一個實例化對象,所以list_也會擁有父類list擁有的方法。當然可以通過自定義類的形式實現兩個類之間的繼承關系,我們定義Parent和Child兩個類,Child中沒有任何屬性和方法,只是繼承於父類Parent。

當子類中定義了與父類中同名的方法或者屬性,則會自動覆蓋父類對應的方法或屬性,還是用上面這個例子實現一下,方便理解。

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

多態比較簡單,比如定義兩個類,這兩個類沒有任何關系,只是兩個類中有同名的方法,而當兩個類的實例對象分別調用這個方法時,不同類的實例對象調用的方法也是不同的。

上面這兩個類中都有introce方法,我們可以實例化一下兩個類,利用實例對象調用這個方法實現一下多態。

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

需要注意的有兩點:

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

需要注意的有兩點:

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

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

3. Python繼承父類parent的正確格式為

格式:

class 子類名(父類1,父類2)

類的繼承就是讓子類擁有父類的屬性和方法。

幾個注意:py支持多繼承

子類繼承的父類只能初始化一次,如果父類1和父類2有共同的父類或者祖先類,則類初始化的時候會失敗。

當父類具有相同方法時,會調用最先繼承的父類中的方法,如果要指定父類,則需要重寫此方法,並通過父類名.方法名來調用指定父類方法。

4. Python子類與父類的關系問題

  1. 不如貼代碼

  2. 可以去看下 MRO 的東西, 以及類/實例的屬性和__dict__的關系

  3. 屬性是怎麼查找的, getattr, __getattr__, __getattribute__ 這幾個是怎麼運行的...


另外你這個 method 是什麼我真的沒懂... 什麼叫 A類的類名...

5. Python中的面向對象(進階)

一、實例方法,類方法,靜態方法

我們首先寫一個類,裡麵包含這三種方法。

可以看到,我們用到了兩個裝飾器。

我們用類和實例分別調用下類方法

我們用類和實例分別調用下靜態方法

靜態方法其實就是把一個普通的函數寫在類里,與直接在外層寫一個函數是一樣的,本質上是一個函數。

為了方便理解,我們分別列印下這些方法的類型

通過type()查看對象是方法還是函數

此外,還可以通過inspect模塊判斷某個對象是否是某種類型,返回布爾值。

用法


小Tips:概念理解

直接def定義的,我們叫做函數

把函數放到類里,我們叫做方法

方法可以通過裝飾器staticmethod轉為(放在方法里的)函數

繼承

一個類繼承另一個類時,會自動獲得另一個類的所有屬性和方法,被繼承的類稱之為父類,新類稱為子類。子類擁有父類所有的屬性和方法,並且可以定義自己的屬性和方法

我們以上邊的Rectangle類為父類來試一下


1)完全繼承

可以看到,子類完全繼承父類後,可以直接調用父類的所有方法。

2)部分繼承

部分繼承:繼承父類後,修改父類的同名方法

我們試一下,Square繼承Rectangle後,修改__init__()方法

3)拓展父類的方法

在保留父類中某個方法的代碼同時,對方法進行拓展

可以在方法中加入"super().方法名"來實現


4)@property

6. python2.7怎麼查看類或對象的父類

In[1]:classa(list):
...:pass
...:

In[2]:a.__bases__
Out[2]:(list,)

In[3]:a.mro()
Out[3]:[__main__.a,list,object]

In[4]:

如果解決了您的問題請採納!
如果未解決請繼續追問

閱讀全文

與python判斷子類父類相關的資料

熱點內容
C51編譯器在標准C的基礎上 瀏覽:260
銀行卡掉了可以辦車貸解壓嗎 瀏覽:317
沒解壓可以貸款嗎 瀏覽:517
最小pdf閱讀器 瀏覽:808
游戲被加密了怎樣用電腦打開 瀏覽:300
藍燈如何手動選擇伺服器 瀏覽:85
伺服器設置在中國意味什麼 瀏覽:571
單片機不能進行選擇控制 瀏覽:694
咕咚手錶如何綁定手機app 瀏覽:530
命令虛擬語氣 瀏覽:405
戴爾系統命令 瀏覽:583
怎樣壓縮視頻文件大小 瀏覽:686
51單片機信號發生器 瀏覽:56
米拍攝影哪個app好 瀏覽:88
天津致遠曙光伺服器雲伺服器 瀏覽:117
光子程序員怎麼獲得 瀏覽:535
中醫診斷學第九版pdf 瀏覽:498
python集成包 瀏覽:305
如何用電腦解壓縮文件 瀏覽:448
pubg用什麼伺服器 瀏覽:528