国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python學(xué)習(xí)之面向?qū)ο蟆救腴T初級篇】

2019-11-25 16:23:22
字體:
供稿:網(wǎng)友

前言

最近在學(xué)習(xí)Python的面向?qū)ο缶幊蹋郧笆菦]有接觸過其它的面向?qū)ο缶幊痰恼Z言,因此學(xué)習(xí)這一部分是相當(dāng)帶勁的,這里也總結(jié)一下。

概述

  • python支持多種編程范式:面向過程、面向?qū)ο?、面向切面(裝飾器部分)等。
  • 面向過程:根據(jù)業(yè)務(wù)邏輯從上到下寫壘代碼
  • 函數(shù)式:將某功能代碼封裝到函數(shù)中,日后便無需重復(fù)編寫,僅調(diào)用函數(shù)即可
  • 面向?qū)ο螅簩瘮?shù)進(jìn)行分類和封裝,讓開發(fā)“更快更好更強(qiáng)...”

OOP思想

  • 面向?qū)ο蟮幕菊軐W(xué):世界由具有各自運(yùn)動規(guī)律和內(nèi)部狀態(tài)的對象組成,對象之間相互作用和通訊構(gòu)成了世界。
  • 唯一性,世界沒有兩片相同的樹葉,同樣的沒有相同的對象。
  • 分類性,分類是對現(xiàn)實世界的抽象。
  • 三大特性:封裝、繼承和多態(tài)

面向?qū)ο蟮娜筇匦裕?/strong>

一、封裝

封裝,對具體對象的一種抽象,即將某些部分隱藏起來,在程序外部看不到,即無法調(diào)用。

私有化:將類或函數(shù)中的某些屬性限制在某個區(qū)域之內(nèi),外部無法調(diào)用。

Python中私有化的方法也比較簡單,就是在準(zhǔn)備私有化的屬性(包括方法、數(shù)據(jù))名字前面加雙下劃線。

例如:

class ProtectMe(object):  def __init__(self): self.me = "qiwsir" self.__name = "kivi"  def __python(self): print("I love Python.")   def code(self): print9"Which language do you like?") self.__python() if __name__ == "__main__": p = ProtectMe() print(p.me) print(p.__name) #運(yùn)行結(jié)果qiwsirTraceback (most recent call last): File "21102.py", line 21, in <module> print p.__nameAttributeError: 'ProtectMe' object has no attribute '__name' 

說明:__name屬性隱藏了,無法調(diào)用。

調(diào)用私有屬性,可以使用property函數(shù)

class ProtectMe(object):  def __init__(self): self.me = "qiwsir" self.__name = "kivi"  @property def name(self): return self.__name if __name__ == "__main__": p = ProtectMe() print(p.name)#運(yùn)行結(jié)果 kivi 

所以,在使用面向?qū)ο蟮姆庋b特性時,需要:

  • 將內(nèi)容封裝到某處
  • 從某處調(diào)用被封裝的內(nèi)容

第一步:將內(nèi)容封裝到某處

 self 是一個形式參數(shù),當(dāng)執(zhí)行 obj1 = Foo('wupeiqi', 18 ) 時,self 等于 obj1

                              當(dāng)執(zhí)行 obj2 = Foo('alex', 78 ) 時,self 等于 obj2

所以,內(nèi)容其實被封裝到了對象 obj1 和 obj2 中,每個對象中都有 name 和 age 屬性,在內(nèi)存里類似于下圖來保存。

第二步:從某處調(diào)用被封裝的內(nèi)容

調(diào)用被封裝的內(nèi)容時,有兩種情況:

  • 通過對象直接調(diào)用
  • 通過self間接調(diào)用
class Role(object): ac = None #類變量 def __init__(self,name,role,weapon,life_value): #初始化方法 self.name = name #實例變量(成員變量) self.role = role self.weapon = weapon self.life_val = life_value  def buy_weapon(self,weapon): #定義方法 #self:表示實例本身 self.weapon = weapon # print("%s is buying [%s]" %(self.name,weapon)) #把一個抽象的類變成一個具體的對象的過程,叫實例化 p1 = Role("sanjiang",'Police',"B10",90) #實例t1 = Role("Chunyun",'Terrorist',"B11",100)

二、繼承

繼承,面向?qū)ο笾械睦^承和現(xiàn)實生活中的繼承相同,即:子可以繼承父的內(nèi)容。

class SchoolMember(object): # member_nums = 0 def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex # self.enroll()  def enroll(self): SchoolMember.member_nums += 1 print("SchoolMember [%s] is enrolled!" %self.name)  def tell(self): print("Hello my name is [%s]" %self.name) class Teacher(SchoolMember): def __init__(self,name,age,sex,course,salary): #重寫父類的__init__方法 super(Teacher,self).__init__(name,age,sex) #繼承(新式類) # SchoolMember.__init__(self,name,age,sex) #繼承(舊式類) self.course = course self.salary = salary  def teaching(self): print("Teacher [%s] is teaching [%s]" %(self.name,self.course))   class Student(SchoolMember): def __init__(self,name,age,sex,course,tuition): super(Student,self).__init__(name,age,sex) self.course = course self.tuition = tuition  def pay_tuition(self): print("ca,student [%s] paying tuition [%s] again" %(self.name,self.tuition))

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 漳州市| 莱阳市| 于都县| 建平县| 营山县| 肇庆市| 泸定县| 安岳县| 寿光市| 临洮县| 克拉玛依市| 平果县| 盈江县| 邢台市| 兰州市| 宁远县| 鸡泽县| 孝感市| 喀喇沁旗| 高邑县| 嵊泗县| 松潘县| 越西县| 凯里市| 建水县| 韩城市| 洛川县| 新田县| 青田县| 屏边| 黔西| 陕西省| 马鞍山市| 湖州市| 夹江县| 张家口市| 天长市| 辰溪县| 桐梓县| 高唐县| 吉水县|