欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python面向?qū)ο蠓椒ǖ膮^(qū)別是什么

這篇文章主要介紹python面向?qū)ο蠓椒ǖ膮^(qū)別是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、南京ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的南京網(wǎng)站制作公司

                                                           Python從設(shè)計(jì)之初就已經(jīng)是一門面向?qū)ο蟮恼Z(yǔ)言,正因?yàn)槿绱?,在Python中創(chuàng)建一個(gè)類和對(duì)象是很容易的。

方法包括:實(shí)例方法、靜態(tài)方法和類方法,三種方法在內(nèi)存中都?xì)w屬于類,區(qū)別在于調(diào)用方式不同。

實(shí)例方法:由對(duì)象調(diào)用;至少一個(gè)self參數(shù);執(zhí)行普通方法時(shí),自動(dòng)將調(diào)用該方法的對(duì)象賦值給self;

類方法:由類調(diào)用; 至少一個(gè)cls參數(shù);執(zhí)行類方法時(shí),自動(dòng)將調(diào)用該方法的類復(fù)制給cls;

靜態(tài)方法:由類調(diào)用;無(wú)默認(rèn)參數(shù)。

python面向?qū)ο蠓椒ǖ膮^(qū)別是什么

實(shí)例方法

class Kls(object):
    def __init__(self, data):
        self.data = data
    def printd(self):
        print(self.data)
ik1 = Kls('leo')
ik2 = Kls('lee')
ik1.printd()
ik2.printd()

輸出:

leo 
lee

上述例子中,printd為一個(gè)實(shí)例方法。實(shí)例方法第一個(gè)參數(shù)為self,當(dāng)使用ik1.printd()調(diào)用實(shí)例方法時(shí),實(shí)例ik1會(huì)傳遞給self參數(shù),這樣self參數(shù)就可以引用當(dāng)前正在調(diào)用實(shí)例方法的實(shí)例。利用實(shí)例方法的這個(gè)特性,上述代碼正確輸出了兩個(gè)實(shí)例的成員數(shù)據(jù)。

類方法

Python 的類方法采用裝飾器@classmethod來(lái)定義,我們直接看例子。

class Kls(object):
    num_inst = 0
    def __init__(self):
        Kls.num_inst = Kls.num_inst + 1
    @classmethod
    def get_no_of_instance(cls):
        return cls.num_inst
ik1 = Kls()
ik2 = Kls()
print ik1.get_no_of_instance()
print Kls.get_no_of_instance()

輸出:

2 
2

在上述例子中,我們需要統(tǒng)計(jì)類Kls實(shí)例的個(gè)數(shù),因此定義了一個(gè)類變量num_inst來(lái)存放實(shí)例個(gè)數(shù)。通過(guò)裝飾器@classmethod的使用,方法get_no_of_instance被定義成一個(gè)類方法。在調(diào)用類方法時(shí),Python 會(huì)將類(class Kls)傳遞給cls,這樣在get_no_of_instance內(nèi)部就可以引用類變量num_inst。

由于在調(diào)用類方法時(shí),只需要將類型本身傳遞給類方法,因此,既可以通過(guò)類也可以通過(guò)實(shí)例來(lái)調(diào)用類方法。

靜態(tài)方法

在開(kāi)發(fā)中,我們常常需要定義一些方法,這些方法跟類有關(guān),但在實(shí)現(xiàn)時(shí)并不需要引用類或者實(shí)例,例如,設(shè)置環(huán)境變量,修改另一個(gè)類的變量,等。這個(gè)時(shí)候,我們可以使用靜態(tài)方法。

Python 使用裝飾器@staticmethod來(lái)定義一個(gè)靜態(tài)方法。

IND = 'ON'

class Kls(object):
    def __init__(self, data):
        self.data = data
    @staticmethod
    def checkind():
        return IND == 'ON'
    def do_reset(self):
        if self.checkind():
            print('Reset done for: %s' % self.data)
    def set_db(self):
        if self.checkind():
            print('DB connection made for: %s' % self.data)
ik1 = Kls(24)
ik1.do_reset()
ik1.set_db()

輸出:

Reset done for: 24 
DB connection made for: 24

在代碼中,我們定義了一個(gè)全局變量IND,由于IND跟類Kls相關(guān),所以我們將方法checkind放置在類Kls中定義。方法checkind只需檢查IND的值,而不需要引用類或者實(shí)例,因此,我們將方法checkind定義為靜態(tài)方法。

對(duì)于靜態(tài)方法,Python 并不需要傳遞類或者實(shí)例,因此,既可以使用類也可以使用實(shí)例來(lái)調(diào)用靜態(tài)方法。

實(shí)例方法,類方法與靜態(tài)方法的區(qū)別

我們用代碼說(shuō)明實(shí)例方法,類方法,靜態(tài)方法的區(qū)別。注意下述代碼中方法foo,class_foo,static_foo的定義以及使用。

class Kls(object):
    def foo(self, x):
        print('executing foo(%s,%s)' % (self, x))
    @classmethod
    def class_foo(cls,x):
        print('executing class_foo(%s,%s)' % (cls,x))
    @staticmethod
    def static_foo(x):
        print('executing static_foo(%s)' % x)
ik = Kls()
# 實(shí)例方法
ik.foo(1)
print(ik.foo)
print('==========================================')
# 類方法
ik.class_foo(1)
Kls.class_foo(1)
print(ik.class_foo)
print('==========================================')
# 靜態(tài)方法
ik.static_foo(1)
Kls.static_foo('hi')
print(ik.static_foo)

輸出:

executing foo(<__main__.Kls object at 0x0551E190>,1)
<bound method Kls.foo of <__main__.Kls object at 0x0551E190>>
==========================================
executing class_foo(<class '__main__.Kls'>,1)
executing class_foo(<class '__main__.Kls'>,1)
<bound method type.class_foo of <class '__main__.Kls'>>
==========================================
executing static_foo(1)
executing static_foo(hi)
<function static_foo at 0x055238B0>

對(duì)于實(shí)例方法,調(diào)用時(shí)會(huì)把實(shí)例ik作為第一個(gè)參數(shù)傳遞給self參數(shù)。因此,調(diào)用ik.foo(1)時(shí)輸出了實(shí)例ik的地址。

對(duì)于類方法,調(diào)用時(shí)會(huì)把類Kls作為第一個(gè)參數(shù)傳遞給cls參數(shù)。因此,調(diào)用ik.class_foo(1)時(shí)輸出了Kls類型信息。

前面提到,可以通過(guò)類也可以通過(guò)實(shí)例來(lái)調(diào)用類方法,在上述代碼中,我們?cè)僖淮芜M(jìn)行了驗(yàn)證。

對(duì)于靜態(tài)方法,調(diào)用時(shí)并不需要傳遞類或者實(shí)例。其實(shí),靜態(tài)方法很像我們?cè)陬愅舛x的函數(shù),只不過(guò)靜態(tài)方法可以通過(guò)類或者實(shí)例來(lái)調(diào)用而已。

值得注意的是,在上述例子中,foo只是個(gè)函數(shù),但當(dāng)調(diào)用ik.foo的時(shí)候我們得到的是一個(gè)已經(jīng)跟實(shí)例ik綁定的函數(shù)。調(diào)用foo時(shí)需要兩個(gè)參數(shù),但調(diào)用ik.foo時(shí)只需要一個(gè)參數(shù)。foo跟ik進(jìn)行了綁定,因此,當(dāng)我們打印ik.foo時(shí),會(huì)看到以下輸出:

<bound method Kls.foo of <__main__.Kls object at 0x0551E190>>

當(dāng)調(diào)用ik.class_foo時(shí),由于class_foo是類方法,因此,class_foo跟Kls進(jìn)行了綁定(而不是跟ik綁定)。當(dāng)我們打印ik.class_foo時(shí),輸出:

<bound method type.class_foo of <class '__main__.Kls'>>

當(dāng)調(diào)用ik.static_foo時(shí),靜態(tài)方法并不會(huì)與類或者實(shí)例綁定,因此,打印ik.static_foo(或者Kls.static_foo)時(shí)輸出:

<function static_foo at 0x055238B0>

概括來(lái)說(shuō),是否與類或者實(shí)例進(jìn)行綁定,這就是實(shí)例方法,類方法,靜態(tài)方法的區(qū)別。

以上是python面向?qū)ο蠓椒ǖ膮^(qū)別是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:python面向?qū)ο蠓椒ǖ膮^(qū)別是什么
路徑分享:http://aaarwkj.com/article22/jjghcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)、小程序開(kāi)發(fā)、網(wǎng)站內(nèi)鏈手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
日本一区二区中文字幕在线 | 国产粉嫩美女一区二区三| 色婷婷亚洲婷婷亚洲最大| 国产精品夜色一区二区三区不卡| 日本伦理三级在线观看| 欧美日韩在线精品1区2区| 久久久亚洲福利精品午夜| 日韩av在线播放亚洲天堂| 天天操天天日天天射夜夜爽| 欧美激情另类综合国内| 日本一区二区三在线观看| 国产传媒在线免费播放| 91桃色午夜福利视频| 国产亚洲精品麻豆一区二区| 欧美一级免费黄片在线播放| 伊人色综合久久天天五月婷| 18禁黄网站禁片免费视频| 无遮挡国产精品一级二级三级视频| 四虎海外免费永久地址| 精品一区二区日韩在线| 欧美日本午夜福利在线观看| 欧美成人午夜福利在线视频| 92午夜福利在线视频| 少妇被啪出水在线视频| 开心五月六月婷婷在线| 91成年精品一区在线观看| 日韩精品国产专区一区| 日韩av在线国产观看| 日韩精品一区二区国产| 中文字幕有码在线朋友| 青青青在线视频观看华人| 日韩人妻一区中文字幕| 丰满人妻的诱惑中文字幕| 国产偷人伦激情在线观看| 亚洲av二区三区成人| 久久伊人这里都是精品| 精品人妻少妇一区二区三| 亚洲天堂av福利在线观看| 国产精品成人av在线网站| 四虎海外永久免费地址| 国产成人性生交大片免费|