python---內置函數(shù)1

關鍵函數(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 ")  

#結果:
true
true
false
false
true
true
  • getattr(object,name,[default])
    獲取對象的屬性或者方法,倘若沒有default,沒有找到改屬性或者方法時,直接報錯,反之如果獲取的是方法,返回方法的內存地址,如果需要調用改方法,加括號,有需要傳參,記得傳參
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"))

#結果:
<function test1 at 0x001846F0>
<function test2 at 0x005F3150>
bucunzai

  getattr(__main__,'test1')()
  getattr(__main__, 'test2')(11)

#結果:
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"))

#結果:
123
12

項目實踐
軌跡及心率數(shù)據(jù)解析腳本、原始數(shù)據(jù)解析腳本

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容