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

資訊專欄INFORMATION COLUMN

Python對類實例使用getattr

Youngs / 1480人閱讀

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

在類的成員函數中,如果你想通過一個字符串(成員函數名)來調用類的成員函數,該怎么做?

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的第一個參數是對象名,那么就要這樣用

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

相當于是fn只是一個函數名,需要一個調用參數,第一個參數就是self,也就是對象實例。
在類成員函數中,可以這樣用

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"

看上面的成員函數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)
這個基本上指明了原因。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38575.html

相關文章

  • Python中的類元編程

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

    alexnevsky 評論0 收藏0
  • SICP Python 描述 2.5 面向對象編程

    摘要:類似消息傳遞中的分發字典,對象響應行為請求。消息傳遞和點表達式方法定義在類中,而實例屬性通常在構造器中賦值,二者都是面向對象編程的基本元素。使用帶有內建對象系統語言的優點是,消息傳遞能夠和其它語言特性,例如賦值語句無縫對接。 2.5 面向對象編程 來源:2.5 Object-Oriented Programming 譯者:飛龍 協議:CC BY-NC-SA 4.0 面向對象編程...

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

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

    CloudwiseAPM 評論0 收藏0
  • Python中的動態屬性和特性

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

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

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

    zhouzhou 評論0 收藏0

發表評論

0條評論

Youngs

|高級講師

TA的文章

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