Python面向?qū)ο?

Python支持多種編程方式:面向過程,面向?qū)ο?,面向切?裝飾器部分)等

OOP思想

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

面向?qū)ο筇匦?/h2>

三大特性:封裝,繼承和多態(tài)

1. 封裝

1.1.類的公有屬性
類外面都可以訪問的屬性叫公有屬性 X
屬于這個(gè)類的對象都可以訪問的屬性叫公有屬性 V

1.2 更改類的公有屬性
I. 通過對象改(在自己的內(nèi)存中創(chuàng)建了一個(gè)新的變量)
r1.nationality = CN
II. 通過類改
Role.nationality = JP
對象訪問公有屬性:對象的內(nèi)存地址—>類地址(先在自己的內(nèi)存地址查找,如果不存在就在類地址中查找) 類似與類方法繼承

  • 類中封裝了:字段,方法
  • 對象中封裝了:普通字段的值
class F1(object):
    def __init__(self,n):
        self.N = n
        print('F1')

class F2(object):
    def __init__(self,arg1):
        self.a =arg1
        print('F2')

class F3(object):
    def __init__(self,arg2):
        self.b = arg2
        print('F3')

o1 = F1('Alex')
o2 = F2(o1)
o3 = F3(o2)

如何通過o3得到Alex: o3.b.a.N
封裝不僅可以封裝字符串,數(shù)字,還有對象等

2. 繼承

繼承的過程就是從一般到特殊的過程

class F1(object):
    def __init__(self):
        print("F1")

    def a1(self):
        print('F1a1')

    def a2(self):
        print('F1a2')

class F2(F1):
    def __init__(self):
        print('F2')

    def a1(self):       #--3--
        self.a2()       #--4--
        print('F2a1')   #--7--

    def a2(self):
        print('F2a2')

class F3(F2):
    def __init__(self):
        print('F3')

    def a2(self):        #--5--
        print('F3a2')    #--6--

obj = F3()     # --1--
obj.a1()       #--2--

F3
F3a2
F2a1

經(jīng)典類與新式類

SchoolMember.__init__(self,name,age,sex) #經(jīng)典類寫法
super(Teacher,self).__init__(name,age,sex) #新式類寫法
Python2 經(jīng)典類深度查詢,新式類廣度查詢
Python3 經(jīng)典類和新式類都為廣度查詢

多重繼承
class A(object):
    def __init__(self, a):
        print('init A...')            #--5--
        self.a = a                    #--6--

class B(A):
    def __init__(self, a):
        super(B, self).__init__(a)    #--3--
        print('init B...')            #--8--

class C(A):
    def __init__(self, a):
        super(C, self).__init__(a)    #--4--
        print('init C...')            #--7--

class D(B, C):
    def __init__(self, a):
        super(D, self).__init__(a)    #--2--
        print('init D...')            #--9--

d = D("d")              #--1--

init A...
init C...
init B...
init D...
參考文檔:http://www.cnblogs.com/superxuezhazha/p/5737967.html

3. 多態(tài)

python的多態(tài)用一句話概括就是,有這種方法,并且傳入相應(yīng)的參數(shù)就行
參考文檔: http://www.cnblogs.com/superxuezhazha/p/5737955.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容