您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Python類和對象的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在現實世界中存在各種不同形態的事物,這些事物之間存在著各種各樣的聯系。在程序中使用對象來映射現實中的事物,使用對象間的關系來描述事物之間的聯系,這種思想就是面向對象。
面向過程與面向對象的編程思想
若加入悔棋功能,面向過程和面向對象,分別怎么實現呢?
面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一一實現,使用的時候依次調用就可以了。(POP:Procedure-Oriented Programming)
面向對象則是把構成問題的事務按照一定規則劃分為多個獨立的對象,然后通過調用對象的方法來解決問題。(OOP:Object-Oriented Programming)
面向對象是把構成問題的事務按照一定規則劃分為多個獨立的對象,然后通過調用對象的方法來解決問題。一個應用程序會包含多個對象,通過多個對象的相互配合來實現應用程序的功能,這樣當應用程序功能發生變動時,只需要修改個別的對象就可以了,從而使代碼更容易得到維護。面向對象的特點主要可以概括為封裝性、繼承性和多態性。
封裝是面向對象的核心思想,將對象的屬性(property)和行為(behavior)封裝起來,不需要讓外界知道具體實現細節。
繼承主要描述的就是類與類之間的關系,通過繼承,可以在無需重新編寫原有類的情況下,對原有類的功能進行擴展(extend)。
多態指的是在一個類中定義的屬性和功能被其他類繼承后,當把子類對象直接賦值給父類引用變量時,相同引用類型的變量調用同一個方法所呈現出的多種不同行為特性。
面向對象的編程思想,力圖讓程序中對事物的描述與該事物在現實中的形態保持一致。為了做到這一點,面向對象的思想中提出了兩個概念——類和對象。
類是對某一類事物的抽象描述,而對象用于表示現實中該類事物的個體。簡而言之,類是模板(template),對象是實例(instance)。
分析: 可以將上圖人看作是一個類,將每個具體的人(如小韓、小石等)看作對象,從人與具體個人之間的關系便可以看出類與對象之間的關系。
說明: 類用于描述多個對象的共同特征,它是對象的模板,而對象用于描述現實中的個體,它是類的實例。對象是類的具體化,并且一個類可以對應多個對象。
類的名稱:類名,首字母必須大寫,比如Person
類的屬性:一組數據,比如姓名、性別、年齡……(描述類的特征 - 靜態)
類的方法:允許進行操作的方法,比如說話、步行、跑步……(描述類的行為 - 動態)
使用class關鍵字來聲明一個類
class 類名: 類的屬性 類的方法
定義的類繼承了一個或多個父類
class 類名(父類1, 父類2, …, 父類n): 類的屬性 類的方法
編寫程序 - 類定義演示.py
利用無參構造方法創建對象:對象名 = 類名()
利用有參構造方法創建對象:對象名 = 類名(參數列表)
對象名.新屬性名 = 值
編寫程序 - 基于類創建對象.py
運行程序,查看結果
修改對象屬性值,再訪問對象方法
由此可見,在Person類里定義三個屬性name、gender、age,所有基于該類的對象都具有同樣的初始值,然后可以根據需要修改對象的屬性值。
基于Person類再創建一個對象father,調用speak()方法,修改對象屬性值,再調用speak()方法
在前面,我們已使用過多種對象:整數對象、小數對象、字符串對象、函數對象、模塊對象等。
用dir()函數查看一個對象有哪些屬性與方法
(1)查看整數對象的屬性和方法
執行:dir(int)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
(2)案例演示
查看整數的字節長度 - bit_length()
327的二進制位數是9,調用bin()函數將其轉換成二進制:101000111(9位)
查看復數的實部和虛部
整數轉換成字節數據 - to_bytes()
演示將整數1345轉換成字節數據
演示將字節數據轉換成整數
演示冪運算 - __pow__()
演示比較運算
(1)查看小數對象的屬性和方法
執行:dir(float)
['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__round__', '__rpow__', '__rsub__', '__rtruediv__', '__set_format__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']
(2)案例演示
保留小數位數 - __round__()
演示冪運算 - __pow__()
(1)查看字符串對象的屬性和方法
執行:dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
(2)案例演示
判斷字符串是不是全為數字構成 - isdigit()
判斷字符串是不是全為字母構成 - isalpha()
定義函數
查看函數類型
將函數對象賦值給變量
導入模塊并查看類型
訪問模塊的屬性與函數
將模塊對象賦值給變量
在Python的對象模型中,有兩種對象:類對象和實例對象。類對象是在執行class語句時創建的,而實例對象是在調用類的時候創建的。每調用一次類,便創建一個實例對象。類對象只有一個,而實例對象可以有多個。類對象和每個實例對象都分別擁有自己的命名空間,在各自的命名空間內存儲屬于自己的數據。
Python執行class語句時創建一個類對象和一個變量(名稱就是類名稱),變量引用類對象。與def類似,class也是可執行語句。導入類模塊時,class語句被執行,創建類對象。
類中的賦值語句創建的變量是類的數據屬性。與模塊類似,類中的頂層賦值語句創建的變量才屬于類對象。類的數據數據用“對象名.屬性名”格式來訪問。
類中的def語句定義的函數是類的方法屬性,用“對象名.方法名()”格式來訪問。
類的數據和方法由所有的實例對象共享。
實例對象通過調用類對象來創建(就像調用函數一樣來調用類對象)。
每個實例對象繼承類對象的屬性,并獲得自己的命名空間。
實例對象的“私有”屬性。類的方法函數的第一個參數默認為self,表示引用方法的對象實例。在方法中對self的屬性賦值才會創建屬于實例對象的屬性。
感謝各位的閱讀!關于“Python類和對象的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。