標籤:
getattr()函數是Python自省的核心函數,具體使用大體如下:
擷取對象引用getattr
Getattr用於返回一個對象屬性,或者方法
class A:
def __init__(self):
self.name = ‘zhangjing‘
#self.age=‘24‘
def method(self):
print"method print"
Instance = A()
print getattr(Instance , ‘name, ‘not find‘) #如果Instance 對象中有屬性name則列印self.name的值,否則列印‘not find‘
print getattr(Instance , ‘age‘, ‘not find‘) #如果Instance 對象中有屬性age則列印self.age的值,否則列印‘not find‘
print getattr(a, ‘method‘, ‘default‘)
#如果有方法method,否則列印其地址,否則列印default
print getattr(a, ‘method‘, ‘default‘)()
#如果有方法method,運行函數並列印None否則列印default
註:使用getattr可以輕鬆實現原廠模式。
例:一個模組支援html、text、xml等格式的列印,根據傳入的formate參數的不同,調用不同的函數實現幾種格式的輸出
import statsout
def output(data, format="text"):
output_function = getattr(statsout, "output_%s" % format)
return output_function(data)
>>> li=["zhangjing","zhangwei"]
>>> getattr(li,"pop")
<built-in method pop of list object at 0x011DF6C0>
>>> li.pop
<built-in method pop of list object at 0x011DF6C0>
>>> li.pop()
‘zhangwei‘
>>> getattr(li,"pop")()
‘zhangjing‘
>>>getattr(li, "append")("Moe")
Python的getattr(),setattr(),delattr(),hasattr()