日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

面向對象的編程(Object-Oriented Programming ,OOP),每當看到這個術語,我們就會把它與JAVA聯系起來。

事實上,Java普及了面向對象的編程風格,除了Java之外,還有很多OOP語言,例如,C++、C#、Swift、JavaScript、php等,當然,也包括Python。

Python提供了一種面向對象的編程風格,今天,我就來循序漸進的講解一下Python面向對象,保證哪怕是零基礎小白在看完這篇文章后也能夠徹底搞明白Python面向對象。

在本文中,我將從如下幾個主題給大家介紹Python面向對象編程的基礎知識:

  1. 對象
  2. 繼承
  3. 屬性
  4. 方法

1 基本概念

1.1 類

什么是面向對象編程?終于懂了

 

 

什么是OOP中的類?

首先,借助一張圖片來理解這個概念。

從上面圖片,我們可以看到如下信息:類、對象、屬性、方法和一只皮卡丘。

這與OOP有什么關系?

好吧,上面的圖片正是幫助我們理解OOP概念的東西。

所以,現在進入第一個話題。

OOP中的類是什么意思?類的定義是 "類是同一類型的對象的集合"。

把這個定義與上面的例子聯系起來。

在這幅圖中,我們可以看到有一個名為 小精靈(Pokemon)的矩形框,這就是類的名稱。

因此,簡而言之,類只不過是一個對象的集合。因此,在pokemon宇宙中的所有pokemon都在 "pokemon"類下。

什么是面向對象編程?終于懂了

 

?

為了確保理解,再講一個示例。

以我們經常會見到的汽車為例,日產、特斯拉、福特、豐田,這些可以理解為一個個的對象,而“汽車”則是這一系列對象的合成、集合。

1.2 對象

前面已經反復的提到對象這個概念,接下來再具體的解釋一下。

在OOP中,對象是一個類的組成部分成員。考慮到我們的小精靈例子,每個小精靈都是小精靈類的一個對象。比如說。皮卡丘是口袋妖怪類的一個對象。比如說,豐田就是汽車的一個對象。

1.3 屬性

回到我們的Pokemon例子,讓我們專注于圖像中的皮卡丘。觀察它一會兒。你看到了什么?

通過觀察皮卡丘的圖像,我們可以看到它有兩只耳朵,兩只手,兩條腿,臉頰上有兩個紅色的小圓點,還有一個顯著的黃色。

在圖片中的鄰接表格中,我們還看到了一些東西,例如,名稱="皮卡丘",類型="電動"和健康狀況=70。

因此,所有這些都被稱為屬性,屬性是提供關于類或對象的額外信息的元素

在這種情況下,所有這些屬性都提供了關于皮卡丘對象的額外信息,如顏色健康狀況等。

1.4 方法

在Pokemon示例中,在圖表中可以看到諸如attack(), dodge(), evolve()這些東西,這就是所謂的方法。

更簡單地解釋,方法基是與某個特定對象相關的動作

在這種情況下,這些動作與我們的皮卡丘對象有關。

到此為止,想必很多同學對面向對象中的一些概念有了基本的了解。

下面,就實踐起來,看一下Python面向對象到底該怎么用。

2 實踐

2.1 創建類

class Pokemon():

正如你從上面的代碼中所看到的,在Python中創建一個類時,需要遵循一定的結構。

以關鍵字class開頭,通過這種方式,Python可以識別出我們要創建的東西將被視為一個類。

關鍵字class之后是類的名稱,在本例中是 Pokemon。

最后,它的后面是(),然后是:字符。

當然,到這里類還沒有創建好,還需要一些其他的內容。

創建__init__方法

繼續我們的類的創建任務,下一步涉及到創建一個非常特殊的方法,名為__init__。

你可能會問:這個__init__方法是什么?

為了簡單理解這個概念,可以認為init方法類似于Java中的構造方法。

我之前專門寫過一篇文章進行介紹,想深入了解的可以看一下:

先給出具體代碼:

class Pokemon():
  def __init__():

從上面代碼可以看到,已經在Python中創建了__init__方法。

在這里,我們注意到一件事,那就是名為def的關鍵字,在Python中主要用于創建函數或者方法使用。

添加屬性

目前已經定義了__init__( )方法,但是,它仍然沒有被完全定義。仍然需要在__init__( )方法中傳遞某些參數來完成它的定義。

接下來,讓給__init__( )方法中添加這些參數。

class Pokemon():
  def __init__(self,name,Type,health):
    self.name = name
    self.Type = Type
    self.health = health

從上面代碼可以看到,我在__init__( )方法中傳遞了很多參數。現在讓我們回過頭來了解一下這里傳遞的是什么參數。

還記得前面介紹的概念吧?我們討論過皮卡丘是黃色的,臉頰上有兩個紅點,等等。這些是與一個對象相關的屬性,在這個__init__ ( )方法中,我們定義這些屬性。

除此之外,再解釋一下另外一個問題:self的用途是什么?

簡單地解釋一下,self是一個關鍵字,負責將這些屬性連接到我們的類,也就是本例中的Pokemon。

2.2 創建方法

到此為止,我們已經聲明了我們的類,名為__init__()的特殊方法和類的屬性。

接下來,繼續進行最后的部分,即方法的創建。

class Pokemon():
  def __init__(self,name,Type,health):
    self.name = name
    self.Type = Type 
    self.health = health

  def attack(self):
    print("Electric attack!")

  def dodge(self):
    print("Pikachu Dodge!")

  def evolve(self):
    print("Evolving to Raichu!")

正如你可以從上面的代碼中看到的,我創建3個名為attack()、dodge()、evolve()的方法。

觀察這段代碼,你可以看到我們為每個方法都傳遞了一個名為self的參數。在這里,正在使用self關鍵字將這個方法與我們的類連接起來。

到此為止,就創建了一個完整的類。

2.3 創建對象

首先,給出創建對象的代碼,在這里我創建了一個名為pk1的對象:

pk1 = Pokemon("Pikachu","Electric",120)

創建完對象之后,我們就可以做很多操作。

訪問屬性

我們可以通過<對象名>.<屬性>的方法來訪問對象的屬性,來看一下具體的代碼:

pk1.name  # 輸出:Pikachu
pk1.Type  # 輸出:Electric
pk1.health  # 輸出:120

訪問方法

訪問方法和訪問屬性類型<對象名>.<方法>,同樣,用具體代碼來更加清晰的解釋一下:

pk1.attack() # 輸出:Electric attack!
pk1.dodge() # 輸出:Pikachu Dodge!
pk1.evolve() # 輸出:Evolving to Raichu!

到這里,就講解完了Python面向對象編程的基本內容。

下面,就再進階一下,介紹一下面向對象編程中的繼承

2.4 繼承

繼承是OOP中的關鍵概念之一,同樣,借助一個簡單的例子來更加輕松理解這個概念。

什么是面向對象編程?終于懂了

 

?

考慮一個超級跑車的例子,邁凱輪 720S spyder,這是一輛超級跑車。

正如你所看到的,像大多數其他汽車一樣,它有一些共同的特征,如門,擋風玻璃,4個輪子,頭燈,尾燈,等等。

然而,由于它是一輛超級跑車,它有自己的定制特征,如720馬力的V8渦輪增壓發動機,由邁凱輪開發的定制變速箱,以及定制的AWD(全輪驅動)系統。

現在將其與面向對象的術語聯系起來,我們可以說這輛車是從它的父類中繼承了某種特征,在這種情況下,它首先是一個汽車類。

這就是 "繼承"背后的概念。

繼承是一種現象,一個元素從它的父類中獲得特征。在這種情況下,邁凱輪720S spyder繼承了汽車類的所有共同特征,但與此同時,它本身也有某些特殊的特征。

超類和子類

我們的元素所繼承的類(本例中的汽車類)被稱為超類(Superclass),它具有通用性。

而繼承這些特征的類被稱為子類(Subclass),它在本質上是特殊的。

接下來,在 Python 中實現這些概念。

在這個例子中,我將創建兩個類--一個是名為Car的類,它就是超類。另一個是名為McLaren的類,它是子類。這個McLaren類將繼承Car類的所有屬性。

class Car():
  def __init__(self,ndoors,nwheels,tailLight,headLight):
    self.ndoors = ndoors
    self.nwheels = nwheels
    self.tailLight = tailLight
    self.headLight = headLight

在這里,已經創建了第一個名為Car的類。

現在,我們將創建一個名為McLaren的新類,它將繼承這個類的所有屬性。

class McLaren(Car):
  def __init__(self,ndoors,nWheels,tailLight,headLight,Engine,Wheel_Drive):
    Car.__init__(self,ndoors,nWheels,tailLight,headLight)
    self.Engine = Engine
    self.Wheel_Drive = Wheel_Drive

  def Drive(self):
    print("I am driving McLaren 720S Spyder")

正如你在上面的代碼中看到的,由于McLaren類繼承了Car類,我們在創建McLaren類時把Car作為參數之一,這是Python類繼承一種機制。

下面,我們創建一個McLaren的對象,驗證一下它是否繼承了Car特征。

mk1 = McLaren("4","4","Yes","Yes","V8","AWD")

然后,再訪問一下對象的屬性:

mk1.Engine # 輸出:V8
mk1.Wheel_Drive # 輸出:AWD

在這里我們可以看到,我們能夠訪問McLaren對象中專門定義的特殊屬性,這些屬性在基類Car中是沒有的。

在這里我們繼承了我們的基類,讓我們看看基類中的那些屬性是否在我們的McLaren類中被繼承了。

mk1.headLight # 輸出:YES
mk1.ndoors # 輸出:4
mk1.nWheels # 輸出:4

可以看到,新創建的McLaren類的對象繼承了Car基類的所有特征,表明在這個上下文中,繼承被正確地實現了。

到此為止,從基本概念到實踐,涵蓋 Python中類、對象、特殊方法、屬性、方法等概念和具體實現,已經全面的介紹了Python面相對象中的相關知識和內容,是不是已經徹底了解Python面相對象了?

分享到:
標簽:面向對象 編程
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定