python---内置函数1

关键函数:hasattr()、getattr()、setattr(),主要作用为实现反射机制,可以动态加载方法或者类中属性等


  • 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"))

#结果:


bucunzai

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

#结果:
test1
test2 11
  • setattr(object,name,values)
    给对象属性赋值,如果存在直接赋值,如果不存在,先创建再赋值
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

项目实践
轨迹及心率数据解析脚本、原始数据解析脚本

你可能感兴趣的:(python---内置函数1)