關(guān)鍵函數(shù):hasattr()杆故、getattr()、setattr()
缠沈,主要作用為實現(xiàn)反射機制摩渺,可以動態(tài)加載方法或者類中屬性等
-
hasattr(object简烤,name)
判斷object對象里面是否有name屬性或者name方法,object可以是類摇幻,也可以是模塊横侦,即限定范圍,有name返回true绰姻,無name反饋false
def test1():
print("test1")
class test2():
name="test2"
def test3(self):
print("test3")
#測試:
import __main__
hasattr( __main__,"test1") #"test1" 中間顯示不能有空格
hasattr( __main__,"test2")
hasattr( __main__,"test3")
hasattr( test2() ,"test2")
hasattr( test2() ," name ")
hasattr( test2() ," test3 ")
#結(jié)果:
true
true
false
false
true
true
-
getattr(object枉侧,name,[default])
獲取對象的屬性或者方法狂芋,倘若沒有default榨馁,沒有找到改屬性或者方法時,直接報錯帜矾,反之如果獲取的是方法翼虫,返回方法的內(nèi)存地址,如果需要調(diào)用改方法屡萤,加括號珍剑,有需要傳參,記得傳參
def test1():
print("test1")
def test2(aa):
print("test2 %s" %aa)
#測試:
if __name__ == "__main__":
import __main__
print(getattr(__main__,'test1'))
print(getattr(__main__, 'test2'))
print(getattr(__main__, 'test4',"bucunzai"))
#結(jié)果:
<function test1 at 0x001846F0>
<function test2 at 0x005F3150>
bucunzai
getattr(__main__,'test1')()
getattr(__main__, 'test2')(11)
#結(jié)果:
test1
test2 11
-
setattr(object死陆,name招拙,values)
給對象屬性賦值,如果存在直接賦值,如果不存在别凤,先創(chuàng)建再賦值
class test():
name="test"
def run(self):
print("run")
def p(self):
print(self.name)
#測試:
if __name__ == "__main__":
t=test()
setattr(t,'name','123')
setattr(t, 'age', 12)
t.p()
print(getattr(t,"age"))
#結(jié)果:
123
12
項目實踐
軌跡及心率數(shù)據(jù)解析腳本劈愚、原始數(shù)據(jù)解析腳本