Python 面向?qū)ο笾谝换睾?/h2>

概念

屬性:

人類包含很多特征,把這些特征用程序來描述的話,叫做屬性,屬性是名詞,比如年齡、身高、性別、姓名等都叫做屬性,一個(gè)類中可以有多個(gè)屬性

方法:

人類還能做好多事情,把這些功能用程序來描述的話,叫做方法,方法路是動(dòng)詞,比如說話、走路、吃飯等,一個(gè)類中可以有多個(gè)方法

對象:

一個(gè)對象即是一個(gè)類的實(shí)例化后實(shí)例,一個(gè)類必須經(jīng)過實(shí)例化后方可在程序中調(diào)用,一個(gè)類可以實(shí)例化多個(gè)對象,每個(gè)對象亦可以有不同的屬性,就像人類是指所有人,每個(gè)人是指具體的對象,人與人之前有共性,亦有不同

實(shí)例化:

把一個(gè)類轉(zhuǎn)變?yōu)橐粋€(gè)對象的過程就叫實(shí)例化

面向?qū)ο?大特性

Encapsulation 封裝

在類中對數(shù)據(jù)的賦值、內(nèi)部調(diào)用對外部用戶是透明的,這使類變成了一個(gè)膠囊或容器,里面包含著類的數(shù)據(jù)和方法

Inheritance 繼承

一個(gè)類可以派生出子類,在這個(gè)父類里定義的屬性、方法自動(dòng)被子類繼承

Polymorphism 多態(tài)

多態(tài)是面向?qū)ο蟮闹匾匦?簡單點(diǎn)說:“一個(gè)接口,多種實(shí)現(xiàn)”,指一個(gè)基類中派生出了不同的子類,且每個(gè)子類在繼承了同樣的方法名的同時(shí)又對父類的方法做了不同的實(shí)現(xiàn),這就是同一種事物表現(xiàn)出的多種形態(tài)。
多態(tài)是抽象化的一種體現(xiàn),把一系列具體事物的共同點(diǎn)抽象出來, 再通過這個(gè)抽象的事物, 與不同的具體事物進(jìn)行對話。對不同類的對象發(fā)出相同的消息將會(huì)有不同的行為。

一切皆為對象

python中一切皆為對象,且python3中類與類型是一個(gè)概念,類型就是類

類型dict就是類dict

經(jīng)典類與新式類
1.只有在python2中才分新式類和經(jīng)典類,python3中統(tǒng)一都是新式類
2.在python2中,沒有顯式的繼承object類的類,以及該類的子類,都是經(jīng)典類
3.在python2中,顯式地聲明繼承object的類,以及該類的子類,都是新式類
4.在python3中,無論是否繼承object,都默認(rèn)繼承object,即python3中所有類均為新式類

一個(gè)簡單的小案例

class Qiaoning(object):
    def ell(self):
        name = input('請輸入你的用戶名:')
        passwd = input('請輸入你的用戶密碼: ')
        if name == 'qiaoning' and passwd == '123':
            print('系統(tǒng)登錄成功')
        else:
            print('系統(tǒng)登錄失敗')

obj = Qiaoning()
obj.ell()

class Qiaoning:
    def login(self):
        users = str(input('請輸入你的用戶名:'))
        password = int(input('請輸入你的密碼:'))

        if users == 'qiao' and password == 123:
            print('用戶 %s 密碼 %s 登錄成功'%(users,password))
        else:
            print('用戶 %s 密碼 %s 登錄失敗' % (users, password))

obj = Qiaoning()
obj.login()

函數(shù)版用例

def email(el,txt):
    print(el,txt)

def msg(ms,txt):
    print(ms,txt)

def wechat(we,txt):
    print(we,txt)

if 1==1:
    email('qiaoning@qq.com','買票')
    msg('1888888888','買票')
    wechat('xxxxxxx','買票')
    
'''
qiaoning@qq.com 買票
1888888888 買票
xxxxxxx 買票
'''

面向?qū)ο笥美?/h3>
class Messages:
    def email(self,el, txt):
        print(el, txt)

    def msg(self,ms, txt):
        print(ms, txt)

    def wechat(self,we, txt):
        print(we, txt)

obj = Messages()

obj.email('qiaoning@qq.com', '買票')
obj.msg('1888888888', '買票')
obj.wechat('xxxxxxx', '買票')

'''
qiaoning@qq.com 買票
1888888888 買票
xxxxxxx 買票
'''
class A:

    company_name = '老男孩教育'  # 靜態(tài)變量(靜態(tài)字段)
    __iphone = '1353333xxxx'  # 私有靜態(tài)變量(私有靜態(tài)字段)


    def __init__(self,name,age): #特殊方法

        self.name = name  #對象屬性(普通字段)
        self.__age = age  # 私有對象屬性(私有普通字段)

    def func1(self):  # 普通方法
        pass

    def __func(self): #私有方法
        print(666)


    @classmethod  # 類方法
    def class_func(cls):
        """ 定義類方法,至少有一個(gè)cls參數(shù) """
        print('類方法')

    @staticmethod  #靜態(tài)方法
    def static_func():
        """ 定義靜態(tài)方法 ,無默認(rèn)參數(shù)"""
        print('靜態(tài)方法')

    @property  # 屬性
    def prop(self):
        pass

總結(jié)

對比:
函數(shù): 定義簡單/調(diào)用簡單
面向?qū)ο螅?定義復(fù)雜/調(diào)用復(fù)雜, 好處:歸類 將類似的功能放到一起

總結(jié):
1.函數(shù)式編程可能比面向?qū)ο笫礁?br> 2.python支持兩個(gè)編程方式

面向?qū)ο笳Z法格式

class 類名: 定義一個(gè)類
def 函數(shù)名(self): 在類中定義了一個(gè)方法
pass
obj = 類名() 創(chuàng)建了一個(gè)對象/實(shí)例化了一個(gè)對象
obj.函數(shù)名() 通過對象調(diào)用其中一個(gè)方法

最后編輯于
?著作權(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)容