趣味解讀Python面向對象編程 (類和對象) 一、面向對象簡介

一、面向對象簡介

考慮現實生活中,我們的思維方式是放在學生這個個人上,是學生做了自我介紹。而不是像我們剛剛寫出的代碼,先有了介紹的行爲,再去看介紹了誰。

用我們的現實思維方式該怎麼用程序表達呢?

  • 面向過程:根據業務邏輯從上到下寫代碼。

  • 面向對象:將數據與函數綁定到一起,進行封裝,這樣能夠更快速的開發程序,減少了重複代碼的重寫過程。

    面向過程編程最易被初學者接受,其往往用一長段代碼來實現指定功能,開發過程的思路是將數據與函數按照執行的邏輯順序組織在一起,數據與函數分開考慮。

今天來學習一種新的編程方式:面向對象編程(Object Oriented Programming,OOP,面向對象程序設計)。

面向對象編程的2個非常重要的概念:類和對象。

對象是面向對象編程的核心,在使用對象的過程中,爲了將具有共同特徵和行爲的一組對象抽象定義,提出了另外一個新的概念——類。

類就相當於製造飛機時的圖紙,用它來進行創建的飛機就相當於對象。

二、分析類與對象

1. 類

物以類聚,人以羣分。
具有相似內部狀態和運動規律的實體的集合(或統稱爲抽象)。
具有相同屬性和行爲事物的統稱。

類是抽象的,在使用的時候通常會找到這個類的一個具體的存在,使用這個具體的存在,一個類可以找到多個對象。

2. 對象

某一個具體事物的存在 ,在現實世界中可以是看得見摸得着的。可以是直接使用的。

3. 類和對象之間的關係

小總結:類就是創建對象的模板。

4. 區分類和對象

奔馳smart 類
張三的那輛奔馳smart 對象
水果 類
蘋果 類
紅蘋果 類 紅富士蘋果 類
我嘴裏吃了一半的蘋果 對象

5. 類的構成

類(Class) 由3個部分構成

  • 類的名稱:類名

  • 類的屬性:一組數據

  • 類的方法:允許對對象進行操作的方法 (行爲)

舉例:

1)人類設計,只關心3樣東西:

  • 事物名稱(類名):人(Person)

  • 屬性:身高(height)、年齡(age)

  • 方法(行爲/功能):跑(run)、打架(fight)

2)狗類的設計

  • 類名:狗(Dog)

  • 屬性:品種 、毛色、性別、名字、 腿兒的數量

  • 方法(行爲/功能):叫 、跑、咬人、喫、搖尾巴

6. 類的抽象

如何把日常生活中的事物抽象成程序中的類?

擁有相同(或者類似)屬性和行爲的對象都可以抽像出一個類。

方法:一般名詞都是類(名詞提煉法)

<1> 坦克發射3顆炮彈轟掉了2架飛機
  • 坦克 --> 可以抽象成類。

  • 炮彈 --> 可以抽象成類。

  • 飛機 --> 可以抽象成類。

<2> 小明在公車上牽着一條叼着熱狗的狗
  • 小明 --> 人類。

  • 公車 --> 交通工具類。

  • 熱狗 --> 食物類。

  • 狗 --> 狗類。

<3>【想一想】如下圖中,有哪些類呢?

說明:

  • 子彈

  • 手榴彈

  • 刀子

  • 箱子

<4>【想一想】如下圖中,有哪些類呢?

說明:

  • 向日葵

  • 類名:xrk

  • 屬性:顏色、品類

  • 行爲:放陽光

  • 豌豆

  • 類名:wd

  • 屬性:顏色 、髮型、血量

  • 行爲:發炮、搖頭

  • 堅果:

  • 類名:jg

  • 屬性:血量、類型

  • 行爲:阻擋

  • 殭屍:

  • 類名:js

  • 屬性:顏色、血量、 類型、速度

  • 行爲:走、跑跳、喫、死

三、項目

1. 定義類

定義一個類,格式如下:

class 類名:
    方法列表

demo:定義一個Cat類

# 定義類
class Cat:
   # 方法
   def eat(self):
       print("貓在喫魚....")

   def drink(self):
       print("貓在喝可樂...")

說明:

  • 定義類時有2種:新式類和經典類,上面的Cat爲經典類,如果是Cat(object)則爲新式類

  • 類名的命名規則按照"大駝峯"。

2. 創建對象

Python中,可以根據已經定義的類去創建出一個個對象。

創建對象的格式爲:

對象名 = 類名()

創建對象demo:

# 定義一個類
class Cat:
   # 屬性
   # 方法
   def eat(self):
       print("貓在喫魚....")

   def drink(self):
       print("貓在喝可樂...")

# 根據類,創建一個對象
tom = Cat()

3. 調用對象的方法

class Cat:
   # 屬性
   # 方法
   def eat(self):
       print("貓在喫魚....")

   def drink(self):
       print("貓在喝可樂...")

# 創建了一個對象
tom = Cat()
tom.eat() # 調用對象的eat方法
tom.drink()

運行結果,如圖所示:

4. 給對象添加屬性

class Cat:
    # 屬性
    # 方法
    def eat(self):
        print("貓在喫魚....")

    def drink(self):
        print("貓在喝可樂...")

# 創建了一個對象
tom = Cat()

# 給對象tom添加了一個屬性,叫name,裏面的值是"湯姆"
tom.name = "湯姆"

# 給對象tom添加了一個屬性,叫age,裏面的值是30
tom.age = 30

# 調用tom的方法
tom.eat()
tom.drink()
print(tom.name)
print(tom.age)

運行結果,如圖所示:

5. 通過方法獲取對象屬性。

class Cat:
    # 屬性
    # 方法
    def eat(self):
        print("貓在喫魚....")

    def drink(self):
        print("貓在喝可樂...")

    def introduce(self):
        # print("名字是:%s, 年齡是:%d" % (湯姆的名字, 湯姆的年齡))
        print("名字是:%s, 年齡是:%d" % (tom.name, tom.age))

# 創建了一個對象
tom = Cat()

# 給對象tom添加了一個屬性,叫name,裏面的值是"湯姆"
tom.name = "湯姆"
tom.age = 30

# 調用tom的方法
tom.eat()
tom.drink()

# 直接通過對象獲取其屬性
print(tom.name)
print(tom.age)

print("-"*30)

# 調用tom的方法,在其方法中獲取它的屬性
tom.introduce()

運行結果,如圖所示:

四、總結

本文以生活中的基礎現象爲切入點,主要介紹了Python的面向對象基礎知識,用豐富的案例幫助大家更好的去了解對象,最後以一隻貓作爲小項目,使用Python編程語言,方便大家增加對類和對象的認識,希望對大家的學習有幫助。
想學習更多Python網絡爬蟲與數據挖掘知識,大家可前往專業網站:http://pdcfighting.com/
想學習更多Python網絡爬蟲與數據挖掘知識,可前往專業網站:http://pdcfighting.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章