Python物件導向的編程

來源:互聯網
上載者:User

標籤:參數   com   str   重點   tps   通過   女朋友   情況   href   

在上一章節中,看書自學python-socket編程裡面發現很多問題,一個重點是不知道python的class是什麼,總是在百度每一句代碼是什麼意思,發現好像問題挺大的,萬一後面還出現了class怎麼辦,難道每一句百度???,果斷百度“python物件導向編程”,以下是學習python物件導向編程的一些心得,原文來自武沛齊,很多地方自己改了一下

 

大綱

1、建立類和對象

2、物件導向的三大特性

 

建立類和對象

物件導向編程是一種編程方式,此編程方式的落地需要使用 “類” 和 “對象” 來實現,所以,物件導向編程其實就是對 “類” 和 “對象” 的使用。

  類就是一個模板,模板裡可以包含多個函數,函數裡實現一些功能

  對象則是根據模板建立的執行個體,通過執行個體對象可以執行類中的函數

  從知乎上面看到這樣一句話,不知道是對是錯,反正我理解不了,感覺太高深

“執行個體就是對象在記憶體中開闢了空間。
父母口中的女朋友(對象),懷裡摟著的她(執行個體)。”

建立一個類:

# 建立類class Foo:
  #類中定義的函數叫方法 def Bar(self):  #類中的函數第一個參數必須是self print("bar") def Hello(self, name): print("i am %s" % name)# 根據類Foo建立對象objobj = Foo() # 相當於拿到類裡面的所有方法(函數),當然,這是我自己得理解# Foo().Bar()obj.Bar() # 執行Bar方法obj.Hello("smelond") # 執行Hello方法

# 物件導向:【建立對象】【通過對象執行方法】
# 函數編程:【執行函數】

 

物件導向三大特性

 

一、封裝

封裝,顧名思義就是將內容封裝到某個地方,以後再去調用被封裝在某處的內容。

所以,在使用物件導向的封裝特性時,需要:

  • 將內容封裝到某處
  • 從某處調用被封裝的內容

 

第一步:將內容封裝到某處

# 建立類class Foo:    def __init__(self, name, age):  # 稱為構造方法,根據類建立對象時自動執行        self.name = name        self.age = age# 根據類Foo建立對象#  自動執行Foo類的__init__方法obj1 = Foo("wupeiqi", 18)  # 將wupeiqi和16分別封裝到(obj1、self)的name和age屬性中# 根據類Foo建立對象#  自動執行Foo類的__init__方法obj2 = Foo("smelond", 16)  # 將smelond和16分別封裝到(obj2、self)的name和age屬性中

 self 是一個形式參數,當執行 obj1 = Foo(‘wupeiqi‘, 18 ) 時,self 等於 obj1

                              當執行 obj2 = Foo(‘alex‘, 78 ) 時,self 等於 obj2

所以,內容其實被封裝到了對象 obj1 和 obj2 中,每個對象中都有 name 和 age 屬性,在記憶體裡類似於來儲存。

 

 第二步:從某處調用被封裝的內容

調用被封裝的內容時,有兩種情況:

  • 通過對象直接調用
  • 通過self間接調用

1、通過對象直接調用被封裝的內容

調用方式:對象.屬性名稱

通過上面的代碼直接調用封裝的內容print(obj1.name)print(obj1.age)print(obj2.name)print(obj2.age)輸出wupeiqi18smelond16

 2、通過self間接調用被封裝的內容

# 通過self間接調用class Foo:    def __init__(self, name, age):        self.name = name        self.age = age    def detail(self):        print(self.name)        print(self.age)obj1 = Foo(‘wupeiqi‘, 18)obj1.detail()  # Python預設會將obj1傳給self參數,即:obj1.detail(obj1),所以,此時方法內部的 self = obj1,即:self.name 是 wupeiqi ;self.age 是 18obj2 = Foo(‘smelond‘, 16)obj2.detail()  # Python預設會將obj2傳給self參數,即:obj2.detail(obj2),所以,此時方法內部的 self = obj2,即:self.name 是 smelond ; self.age 是 17輸出:wupeiqi18smelond16

 綜上所述,對於物件導向的封裝來說,其實就是使用構造方法將內容封裝到 對象 中,然後通過對象直接或者self間接擷取被封裝的內容。

 

Python物件導向的編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.