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

#结果:
<function test1 at 0x001846F0>
<function test2 at 0x005F3150>
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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容