Python入門到精通】(十三)Python面向對象的開發,沒有對象怎么能行呢?|【生長吧!Python】

      網友投稿 885 2025-04-01

      您好,我是碼農飛哥,感謝您閱讀本文,歡迎一鍵三連哦。

      Python是一門面向對象的語言,所以,本文將詳細介紹面向對象的思想介紹類,對象以及方法。

      干貨滿滿,建議,需要用到時??纯?。 小伙伴們如有問題及需要,歡迎踴躍留言哦~ ~ ~。

      前言

      何為面向對象?

      對象

      屬性

      方法

      類的定義

      構造方法

      類對象的創建和使用

      self參數的詳解

      類的變量

      實例方法,靜態方案和類方法詳解

      繼承

      總結

      前言

      說點題外話:這兩天看到鄭州市區洪災的視頻真的很讓人心痛,洪水真的太可怕了。不過,在天災面前我們中華兒女團結一致,眾志成城。社會各界捐款捐物馳援河南。我看了一幕幕感人的景象,感受到了中國人力量。 作為一個普通人的我覺得應該盡一點點綿薄之力。

      今天要介紹的主題是Python的類和對象,重點介紹面向對象的思想以及類的屬性和方法。

      何為面向對象?

      作為一個從Java開發工程師的我對面向對象這個名詞是在熟悉不過了。面向對象的三個特性:封裝,繼承和多態。同樣的Python作為面向對象的語言也是有這三個特性的,本文將詳細介紹其中的兩個特性:封裝和繼承。那么何為面向對象呢?面向對象(Object-oriented Programming,簡稱 OOP)的思想其本質上是一種對事物抽象封裝的思想。

      封裝就是將隱藏具體的細節內容,就好像用戶使用電腦,只需要簡單的操作鍵盤和鼠標就可以實現一些功能。而無需了解計算機內部是如何實現的。

      而在Python語言中的面向對象的封裝是將描述特性的數據(屬性)和描述行為(方法)封裝在一起。

      比如現在要描述一個人的話,我們首先會從兩方面描述:

      從表面特征描述:例如: 膚色,身高,體重,年齡

      從所具有的行為描述:例如:會吃飯,會走路,會說話。

      如果通過代碼來實現的話,其表面特征可以用變量來表示,其行為可以用各種方法來表示。

      class Person: # 膚色 colour = '黃色' # 身高 height = '180cm' # 體重 weight = '60KG' # 年齡 age = 18 def eat(self): print('吃飯') def walk(self): print('走路') def speak(self): print('說話') zhangsan=Person() lisi=Person() wanger=Person()

      通過構建一個Person類就可以將人的特性和行為都封裝起來。人都是有共性的,也就是說可以通過這個類來創建出各種不同的對象。這里不得不說面向對象里的幾個核心概念。

      類可以理解成可以理解成是一個模板,根據這個模板可以創建出許許多多的具體對象,可以把類想象成是一個模子亦或者是一張圖紙。

      對象

      類并不能直接直接被使用, 通過類創建出來的具體的實例(又稱為對象)才能被使用。這就像汽車的圖紙與車本身的關系。大多數情況下,圖紙并不能被普通人所使用,但是通過圖紙創建出的一輛輛汽車能被使用。就像上面通過Person類可以創造出張三,李四,王二麻子。

      zhangsan=Person() lisi=Person() wanger=Person()

      屬性

      類中所有的變量都是類的屬性,比如上面的身高height,體重weight等屬性。

      方法

      類中的所有函數都被稱為方法,不過,和函數有所不同的是類方法至少要包含一個 self 參數(后續會做詳細介紹)。就像上面Person類的eat方法,walk方法。另外,就是類中的方法不能單獨使用,必須通過類創建的對象調用。

      類的定義

      類的定義必須要通過class關鍵字修飾,類名的命名規范建議是每個單詞的首字母大寫,其余字母小寫。

      class 類名: 多個(>=0)類屬性 多個(>=0)類的方法

      就像上面的Person類,其有屬性height,weight等幾個屬性。也有eat,walk等多個方法。

      構造方法

      不過這里有個隱藏的方法,那就是類構造方法__init__()。該方法是一個特殊的類實例方法。Python是通過該方法來創建類的實例。該方法的方法名是固定的,開頭和結尾各有2個下劃線并且中間不能有空格。

      在創建類之后,Python會創建一個默認的構造方法__init__()。如果沒有手動添加__init__()方法的話則使用默認的構造方法創建類的實例(即對象)。 __init__()方法的語法結構是:

      def __init__(self,...): 代碼塊

      __init__()方法可以有多個參數,但必須包含一個名為self的參數,并且self的參數必須為第一個參數,如果沒有其他參數則是默認構造方法。以上面的Person類為例,可以手動添加一個帶其他參數的__init__()方法。

      def __init__(self, head): self.hand = head

      如果手動添加了其他的__init__()方法,則會覆蓋掉默認的構造方法。創建對象時會使用你手動添加的__init__()方法。

      類對象的創建和使用

      創建類對象的過程被稱為類的實例化,其語法結構是類名(參數), 當使用的是默認構造方法時或者添加的__init__()方法中僅有一個self參數,則創建類對象時參數可以不寫。

      但是如果__init__()方法中除了self參數還有其他參數的話,則參數必傳。不然,就會報類似于下面的錯誤。

      Traceback (most recent call last): File "/Python_learn/PycharmProjects/python_demo_1/demo/oop/person.py", line 15, in person = Person() TypeError: __init__() missing 1 required positional argument: 'head'

      這里就必須要傳入head參數。

      person = Person('頭') person.eat()

      self參數的詳解

      前面幾個章節我們多次提到了self參數,那么這個參數到底有啥作用呢?我們知道類是一個模板,通過類這個模板可以創建出許許多多的對象。那么該如何區分這些對象呢?就像每個人都有自己的名字一樣,實例化的對象在Python中也有屬于自己的代號(自身的引用)。而python正是通過self參數來綁定調用對象本身。說白了就是通過self參數可以知道當前的方法是被誰調用了。專業一點的解釋是,當某個對象調用類方法時,該方法會把自身的引用作為第一個參數自動傳給該方法。

      class Person: def __init__(self): print('正在執行構造方法') def eat(self): print(self, '正在吃飯') zhangsan = Person() zhangsan.eat() lisi = Person() lisi.eat()

      其運行結果是:

      正在執行構造方法 <__main__.Person object at 0x1031cd0f0> 正在吃飯 正在執行構造方法 <__main__.Person object at 0x103338da0> 正在吃飯

      這里實例化了zhangsan和lisi兩個對象。當他們同時調用eat方法時,Python會將其自身的引用綁定到self參數上,可以明顯的看出不同的調用者其self參數是不同的。這里的self參數就相當于是Java里的this參數。

      類的變量

      類的變量有三種,分別是類變量,實例變量和局部變量。下面直接舉個例子吧!下面代碼定義了一個Person類,該類定義了了三個變量,兩個方法。

      class Person: name = '張三' def __init__(self): self.age = 18 def get_info(self): sex = '男' print('局部變量sex=', sex) return sex print('類屬性name=', Person.name) person = Person() print('實例屬性age=', person.age) person.get_info()

      運行結果是:

      類屬性name= 張三 實例屬性age= 18 局部變量sex= 男

      這里name,age以及sex三個變量分別是三種不同的變量。下面就分別介紹一下

      其中定義在了類體中,所有函數之外;此范圍定義的變量就稱為類變量,就像上面代碼中的name變量。類變量屬于整個類??梢灾苯油ㄟ^類名.變量名來獲取,就像上面的Person.name。在實際開發中類變量用的比較少。

      定義在類體中,函數內部并且以self.變量名定義的變量就稱為實例變量。就像上面代碼中的age變量。實例變量只作用于調用方法的對象,只能通過對象名訪問,無法通過類名訪問。調用方式如上面實例中的person.age。

      定義在類體中,函數內部的變量以"變量名=變量值"的方式定義的變量就稱為局部變量。就像上面代碼中的sex變量,局部變量只能在函數內部使用。

      實例方法,靜態方案和類方法詳解

      前面介紹完了類中各種類型的變量,接下來就是介紹類中的方法了。類中的方法也可以分為3種。分別是:

      類實例方法

      類中的方法默認是類實例方法,該類型方法的特點是其最少包含一個self參數用于綁定調用此方法的實例對象,就像上面的get_info方法。這種類型的方法也是在實際開發中最常用的一種方法。

      類方法

      類方法:通過@classmethod注解修飾并且方法參數最少包含一個cls參數的方法叫做類方法。類方法同樣屬于類,可以通過類名直接調用。需要特別注意的還cls參數的參數名不能修改,不然調用會報錯。

      類靜態方法

      靜態方法定義在類這個空間(類命名空間)中,而函數則是定義在程序所在的空間(全局命名空間)中。

      class Person: # 類實例方法 def test_selfmethod(self): print('這是一個類實例方法') # 類方法 @classmethod def test_classmethod(cls): print('這是一個類方法') # 靜態方法 @staticmethod def test_staticmethod(name): print('這是一個靜態方法', name) person = Person() print(person.test_selfmethod()) print(Person.test_classmethod()) print(Person.test_staticmethod('碼農飛哥'))

      運行結果是:

      這是一個類實例方法 None 這是一個類方法 None 這是一個靜態方法 碼農飛哥 None

      繼承

      說完了封裝,接著說下繼承吧。就像根據兒子能找到爸爸一樣。在Python中object類是作為其他所有類的基類。默認的話創建的類都是繼承object類。也可以顯示的指定繼承的類。

      class ParentPerson(object): weight = 150 height = 180 def eat(self, name): print(name + '開始吃飯') class SonPerson(ParentPerson): pass sonPerson = SonPerson() sonPerson.eat('兒子')

      運行結果是:兒子開始吃飯

      如上代碼,ParentPerson類顯示指定了其父類object。SonPerson類顯示指定了其父類ParentPerson。在SonPerson類中沒有定義任何的方法和屬性。但是由于其繼承了ParentPerson類也就用來了使用ParentPerson類中屬性和方法的權利。所以sonPerson對象可以調用eat方法。

      【Python從入門到精通】(十三)Python面向對象的開發,沒有對象怎么能行呢?|【生長吧!Python】

      總結

      本文詳細介紹面向對象的思想,以及面向對象的幾個核心概念。分別是類,對象,屬性,方法。總而言之:類是一個模板,用來將事物的特性和行為封裝起來。而對象則是一個個具體的事物。屬性用來表示事物的特性。方法用來表示事物的行為。

      我是碼農飛哥,再次感謝您讀完本文。

      【生長吧!Python】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/278897

      Python 面向對象編程

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何將組合框值復制到Excel中的活動單元格?
      下一篇:excel做曲線圖的方法步驟詳解
      相關文章
      亚洲依依成人亚洲社区| 亚洲女同成av人片在线观看 | 国产精品亚洲色婷婷99久久精品| 亚洲av无码片在线播放| 亚洲国产精品成人AV在线| 亚洲无人区码一二三码区别图片| 亚洲精品国产福利片| 亚洲成a人片在线观看中文动漫| 亚洲精品色午夜无码专区日韩| 亚洲国产成人久久综合碰| 国产偷国产偷亚洲清高APP| 亚洲另类无码专区丝袜| 亚洲av日韩aⅴ无码色老头| 一区二区亚洲精品精华液| 亚洲精品人成网线在线播放va| 亚洲精品无码专区| 亚洲欧美aⅴ在线资源| 亚洲人成电影网站免费| 噜噜综合亚洲AV中文无码| 色窝窝亚洲AV网在线观看| 亚洲国产成人VA在线观看| 亚洲精品老司机在线观看| 中文字幕无码精品亚洲资源网| 亚洲中文字幕无码久久2017| 中文字幕亚洲乱码熟女一区二区 | 亚洲狠狠婷婷综合久久| 午夜亚洲av永久无码精品| 亚洲中文无韩国r级电影| 久久影视国产亚洲| 亚洲国产精品福利片在线观看| 亚洲AV无码专区国产乱码4SE| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲视频手机在线| 国产精品亚洲精品观看不卡| 亚洲熟伦熟女专区hd高清| 男人的天堂亚洲一区二区三区 | 亚洲成在人线av| 亚洲美女激情视频| 久久亚洲精品国产亚洲老地址 | 亚洲电影免费在线观看| 亚洲卡一卡2卡三卡4麻豆|