python的getattr和setattr,python __getattr__函数

  python的getattr和setattr,python __getattr__函数

  大蟒之hasattr()getattr()setattr()delattr()函数使用方法详解_mb62abf3afb54fb的技术博客_博客

  (一)hasattr(对象,名称)函数

  判断一个对象里面是否有名字属性或者名字方法,返回弯曲件值;如果有名字属性(方法)则返回没错,否则返回错误。

  注意:名称方法名需要使用引号括起来。

  class function_demo(object):

  name=demo

  定义运行(自身):

  返回“你好函数"

  函数演示=函数演示()

  print(hasattr(functiondemo, name)) #判断对象是否有名字属性,真的

  print(hasattr(functiondemo, run)) #判断对象是否有奔跑方法,真的

  print(hasattr(functiondemo, age)) #判断对象是否有年龄属性,假(二)getattr(对象,名称[,默认值])函数获取对象目标的属性或者方法,若存在则打印出来;若不存在,则打印默认值,默认值可选。

  注意:如果返回的是对象的方法,那么打印的结果是方法的内存地址。如果需要运行这个方法,那么可以在后面添加括号()。

  class function_demo(object):

  name=demo

  定义运行(自身):

  返回“你好函数"

  函数演示=函数演示()

  print(getattr(functiondemo, name)) #获取名字属性,存在就打印出来-演示

  打印(getattr(functiondemo, run ))

  # 获取奔跑方法,存在打印出方法的内存地址

  __main__的#绑定方法函数_演示.运行.0x006E8A10处的功能_演示对象

  print(getattr(functiondemo, age ))

  # 获取不存在的属性,报错如下:

  #回溯(最近一次呼叫):

  # File F:/Python/PycharmProjects/Mytest _ code/tmp。py ,模块中的第11行

  # getattr(functiondemo, age )

  #属性错误:" function _ demo "对象没有属性“年龄”

  print(getattr(functiondemo, age ,18)) #获取不存在的属性,返回一个默认值注意:使用用于模块的方法时,可以将一个文件即一个模块看作一个对象,模块的属性即模块中编写的变量,同样可以获取变量指向的值。

  例如:

  将seckill.settings作为实用程序_设置导入

  将【将seckill.settings作为实用程序_设置导入】作为模块,即实用程序_设置作为对象,实用程序设置模块中的驱动程序_目录作为对象属性,当属性不存在时赋值属性为无:

  (三)setattr(对象,名称,值)函数给对象的属性赋值,若属性不存在,则先为该对象创建该属性再为对象属性赋值。

  class function_demo(object):

  name=demo

  定义运行(自身):

  返回“你好函数"

  函数演示=函数演示()

  print(hasattr(functiondemo, age))#判断年龄属性是否存在,假的

  setattr(functiondemo, age ,18 ) #对年龄属性进行赋值,无返回值

  print(hasattr(functiondemo, age)) #再次判断属性是否存在,真的

  综合使用:

  class function_demo(object):

  name=demo

  定义运行(自身):

  返回“你好函数"

  函数演示=函数演示()

  if hasattr(functiondemo, addr):#先判断是否存在

  addr=getattr(functiondemo, addr )

  打印(地址)

  否则:

  addr=getattr(functiondemo, addr ,setattr(functiondemo, addr ,首都北京))

  #addr=getattr(functiondemo, addr ,美国纽约)

  打印(地址)

  #运行结果:首都北京下面的示例首先判断一个对象的属性是否存在,若不存在则添加该属性

  类测试():

  name=辛晓婷

  定义运行(自身):

  返回“你好”

  t=测试()

  如果不是hasattr(t,年龄):

  # getattr(t, age ,setattr(t, age , 18 )# age属性不存在时,设置该属性

  setattr(t,年龄, 18 )

  print(getattr(t, age)) #可检测设置成功(四)delattr(对象,名称)函数删除类对象x的播放器属性

  x=X()

  delattr(x, foobar )相等于德尔十。福巴语法:delattr(对象,名称)参数:

  目标对象

  名字必须是当前对象的属性例子:

  类别DelClass:

  x=10

  y=-5

  z=0

  obj=DelClass()

  打印( x ,对象x)

  打印( y ,obj.y)

  打印( z ,对象z)

  delattr(obj, z) #删除对象的z属性

  打印( x ,对象x)

  打印( y ,obj.y)

  打印(报错,对象z)

  结果:

  x 10

  y -5

  z 0

  x 10

  y -5

  打印(报错,对象z)

  属性:类型对象“del class”没有属性“z”来期待陌生感和拥抱惊喜。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: