成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python對(duì)類實(shí)例使用getattr

Youngs / 1545人閱讀

摘要:在類成員函數(shù)中,可以這樣用看上面的成員函數(shù),也是同一個(gè)道理。如果像下面這樣寫(xiě)的話,會(huì)出錯(cuò)報(bào)錯(cuò)信息就是這個(gè)基本上指明了原因。

在類的成員函數(shù)中,如果你想通過(guò)一個(gè)字符串(成員函數(shù)名)來(lái)調(diào)用類的成員函數(shù),該怎么做?

class A:
    val = 1
    def __init__(self):
        pass

    def fun_1(self):
        print self.val
        print "in fun_1"

    def fun_2(self):
        print "in fun_2"

對(duì)于上面的類,你可以這樣用

obj = A()
s = "fun_1"
fn = getattr(obj, s)
fn()

但是如果你傳給getattr的第一個(gè)參數(shù)是對(duì)象名,那么就要這樣用

obj = A()
s = "fun_1"
fn = getattr(A, s)
fn(obj)

相當(dāng)于是fn只是一個(gè)函數(shù)名,需要一個(gè)調(diào)用參數(shù),第一個(gè)參數(shù)就是self,也就是對(duì)象實(shí)例。
在類成員函數(shù)中,可以這樣用

class A:
    val = 1
    def __init__(self):
        pass
    def control(self):
        name = "fun_1"
        fn = getattr(A, name)
        fn(self)
    def fun_1(self):
        print self.val
        print "in fun_1"
    def fun_2(self):
        print "in fun_2"

看上面的成員函數(shù)control,也是同一個(gè)道理。
如果像下面這樣寫(xiě)的話,會(huì)出錯(cuò)

def control(self):
    name = "fun_1"
    fn = getattr(A, name)
    fn()

報(bào)錯(cuò)信息就是
TypeError: unbound method fun_1() must be called with A instance as first argument (got nothing instead)
這個(gè)基本上指明了原因。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/38575.html

相關(guān)文章

  • Python中的類元編程

    摘要:類元編程是指在運(yùn)行時(shí)創(chuàng)建或定制類的技藝。注意在中做元編程時(shí)最好不要用和函數(shù)。三元類基礎(chǔ)知識(shí)元類是類元編程最高級(jí)的工具使用元類可以創(chuàng)建具有某種特質(zhì)的全新變種,例如抽象基類。建議除非開(kāi)發(fā)框架,否則不要在生產(chǎn)代碼中定義元類或抽象基類。 導(dǎo)語(yǔ):本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之元編程篇的重點(diǎn)知識(shí)及個(gè)人心得,打算入門(mén)Python的朋友們可以來(lái)一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、了解運(yùn)行時(shí)創(chuàng)建...

    alexnevsky 評(píng)論0 收藏0
  • SICP Python 描述 2.5 面向?qū)ο缶幊?/b>

    摘要:類似消息傳遞中的分發(fā)字典,對(duì)象響應(yīng)行為請(qǐng)求。消息傳遞和點(diǎn)表達(dá)式方法定義在類中,而實(shí)例屬性通常在構(gòu)造器中賦值,二者都是面向?qū)ο缶幊痰幕驹?。使用帶有?nèi)建對(duì)象系統(tǒng)語(yǔ)言的優(yōu)點(diǎn)是,消息傳遞能夠和其它語(yǔ)言特性,例如賦值語(yǔ)句無(wú)縫對(duì)接。 2.5 面向?qū)ο缶幊? 來(lái)源:2.5 Object-Oriented Programming 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 面向?qū)ο缶幊?..

    starsfun 評(píng)論0 收藏0
  • [譯] 屬性訪問(wèn)、特性和描述符 2

    摘要:不像其他屬性,描述符在類級(jí)別上創(chuàng)建。當(dāng)所有者類被定義時(shí),每個(gè)描述符對(duì)象都是被綁定到一個(gè)不同的類級(jí)別屬性的描述符類實(shí)例。這必須返回描述符的值。此外,描述符對(duì)有一個(gè)方便的響應(yīng)和請(qǐng)求格式。 注:原書(shū)作者 Steven F. Lott,原書(shū)名為 Mastering Object-oriented Python __getattribute__()方法 __getattribute__()方法是...

    CloudwiseAPM 評(píng)論0 收藏0
  • Python中的動(dòng)態(tài)屬性和特性

    摘要:一利用動(dòng)態(tài)屬性處理數(shù)據(jù)源屬性在中,數(shù)據(jù)的屬性和處理數(shù)據(jù)的方法統(tǒng)稱屬性。處理無(wú)效屬性名在中,由于關(guān)鍵字被保留,名稱為關(guān)鍵字的屬性是無(wú)效的。內(nèi)置函數(shù)列出對(duì)象的大多數(shù)屬性。點(diǎn)號(hào)和內(nèi)置函數(shù)會(huì)觸發(fā)這個(gè)方法。 導(dǎo)語(yǔ):本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之元編程篇的重點(diǎn)知識(shí)及個(gè)人心得,打算入門(mén)Python的朋友們可以來(lái)一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、了解如何利用動(dòng)態(tài)屬性處理數(shù)據(jù);2、掌握Pyth...

    scola666 評(píng)論0 收藏0
  • Python中幾種屬性訪問(wèn)的區(qū)別

    摘要:起步的提供一系列和屬性訪問(wèn)有關(guān)的特殊方法。本文闡述它們的區(qū)別和用法。屬性的訪問(wèn)機(jī)制一般情況下,屬性訪問(wèn)的默認(rèn)行為是從對(duì)象的字典中獲取,并當(dāng)獲取不到時(shí)會(huì)沿著一定的查找鏈進(jìn)行查找。則這個(gè)類的對(duì)象稱為描述符。 起步 python的提供一系列和屬性訪問(wèn)有關(guān)的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文闡述它們的區(qū)別和用...

    zhouzhou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Youngs

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<