(十)Python中級知識-面向對象之類

1、概要

面向對象(Object Oriented,簡稱OO)思想在Java及其他編程語言中使用非常廣泛,面向對象的思想也來自於生活中的靈感,很多現實世界的物體或聚合體我們都可以對其進行抽象化歸納,抽象思維是一種思想活動,依靠想象力和對事物的特徵的通用特性進行整理,最終形成一個或一類的具化對象。如:人,我們可以理解爲一種抽象的集合,具有名字、頭、身、手、腳、能直立行走、可以使用工具、具備自主意識、等一些列特徵,我們可以將這一系列公共特徵組合在一起看成一個對象,即:人。

其中人這個對象,在編程語言中我們需要將這個對象表示出來,也就是我們說的類(Class),在類中,我們可以將名字等看作是類的屬性,將直立行走等行爲看作是類的方法。

引入這種面向對象的思想之後,我們可對現實世界中繁多的物體進行類化映射到程序世界裏面,結合一些設計原則和設計模式,我們就可以構建更爲複雜和龐大的程序,同時也更易於維護和擴展,當有了類之後,彷彿一切都有了規則和秩序。

本博主將按照Java語言的面向對象的特性,去學習Python語言的面向對象知識。
其中面向對象最重要的三個特徵:封裝、繼承、多態。將圍繞這三個特徵切入學習。

在學習之前我們需要了解一些基本的知識,那麼如如何定義類、如何使用類實例、如何調用類屬性和方法?

2、創建一個類

類的基本組成單元:屬性和方法。
類的語法格式如下:

class 類名:
    # 屬性
    # 方法()

舉個例子:
創建People類,此類包含兩個屬性,和兩個方法。

# 定義對象爲人的類
class People:
    # 類的屬性(可以是公共、也可以是私有的)
    # 公有屬性,能在本類之外調用
    name = ""
    # 私有屬性,不能在本類之外調用
    __privacy = ""

    # 類的默認構造函數
    def __init__(self):
        print("調用默認構造函數")

    # 自定義構造函數
    # def __init__(self, name):
    #     self.name = name
    #     print(self.name + "調用自定義的構造函數")

    # 類的公有方法,無外部參數
    def walk(self):
        print("直立行走")

    # 類的私有方法,有外部參數
    def do(self, someThing):
        print(self.name + someThing)

類的屬性分爲:公有和私有兩類。
  • 公有屬性:可在其他類中訪問, 屬性名前沒有兩根下劃線__。如上例子中的:name
  • 私有屬性:不可在其他類中訪問,屬性名前有兩根下劃線__。如上例中的:__privacy
類的方法也分爲:公有和私有兩類。
  • 公有方法:可在其他類中訪問, 方法名前沒有兩根下劃線__。如上例子中的:do
  • 私有方法:不可在其他類中訪問,方法名前有兩根下劃線__。如上例中的:__walk
提煉一下類的方法的語法格式:
def 方法名稱(self,參數1,參數2,參數3,...參數n):
        #方法體

注意:類中的方法,第一個參數需要指定爲self,這個是python約定的,且在調用該公共方法時,這個self對應的參數是不需要傳入的,只需要傳入,參數1,參數2,參數3,…參數n即可。

構造函數:

上面例子中的__init__即爲類默認的構造函數,其中構造函數可以自定義,使用自定義構造函數之後,默認構造函數不再生效。構造函數執行順序和java是一致的,類實例化的時候調用。

很詭異的地方是,自定義構造函數之後,默認構造函數不在生效了。

補充一點:靜態方法,在方法名上方添加這個註解@staticmethod即可。

3、使用這個類

先導入類,然後創建類的實例,然後通過類的實例調用公共屬性和公共方法。

# 導入類
from People import People

# 自定義構造函數
# people2 = People("成年人")
# 創建類的實例
people = People()

# 調用類的公共屬性和方法
people.name = "成年人"
people.do('只看利弊')

people.name = "小孩子"
people.do('才分對錯')

輸出結果:
調用默認構造函數
成年人只看利弊
小孩子才分對錯

4、總結

私有屬性或方法都有兩個下劃線開頭__;
創建實例通過:類名(),與java相比沒有new 關鍵字;
Python類的用法上與Java非常類似。
其中我們看到 self 關鍵字,在類中定義一個私有或者公有的方法,需要指定第一個參數爲self,self指類本身,類似java的this關鍵字,其中self這個參數名是可以修改的,如改成self2,self3等,但不建議這麼做,因爲Python一般都約定爲此參數名爲self。

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