国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Youngs / 1476人閱讀

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

在類的成員函數(shù)中,如果你想通過一個字符串(成員函數(shù)名)來調(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"

對于上面的類,你可以這樣用

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

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

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

相當(dāng)于是fn只是一個函數(shù)名,需要一個調(diào)用參數(shù),第一個參數(shù)就是self,也就是對象實(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,也是同一個道理。
如果像下面這樣寫的話,會出錯

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38575.html

相關(guān)文章

  • Python中的類元編程

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

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

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

    starsfun 評論0 收藏0
  • [譯] 屬性訪問、特性和描述符 2

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

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

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

    scola666 評論0 收藏0
  • Python中幾種屬性訪問的區(qū)別

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

    zhouzhou 評論0 收藏0

發(fā)表評論

0條評論

Youngs

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<