摘要:在類成員函數(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
摘要:類元編程是指在運(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)建...
摘要:類似消息傳遞中的分發(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ū)ο缶幊?..
摘要:不像其他屬性,描述符在類級別上創(chuàng)建。當(dāng)所有者類被定義時,每個描述符對象都是被綁定到一個不同的類級別屬性的描述符類實(shí)例。這必須返回描述符的值。此外,描述符對有一個方便的響應(yīng)和請求格式。 注:原書作者 Steven F. Lott,原書名為 Mastering Object-oriented Python __getattribute__()方法 __getattribute__()方法是...
摘要:一利用動態(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...
摘要:起步的提供一系列和屬性訪問有關(guān)的特殊方法。本文闡述它們的區(qū)別和用法。屬性的訪問機(jī)制一般情況下,屬性訪問的默認(rèn)行為是從對象的字典中獲取,并當(dāng)獲取不到時會沿著一定的查找鏈進(jìn)行查找。則這個類的對象稱為描述符。 起步 python的提供一系列和屬性訪問有關(guān)的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文闡述它們的區(qū)別和用...
閱讀 2465·2021-09-09 09:33
閱讀 2865·2019-08-30 15:56
閱讀 3119·2019-08-30 14:21
閱讀 891·2019-08-30 13:01
閱讀 855·2019-08-26 18:27
閱讀 3584·2019-08-26 13:47
閱讀 3449·2019-08-26 10:26
閱讀 1583·2019-08-23 18:38