python中get_attribute,

  python中get_attribute,

  本文主要介绍Python内置的属性getattribute拦截器的详细说明。有需要的朋友可以参考一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  00-1010简介1。内置属性__getattribute__ 2的用法。重写__getattribute__实现属性拦截功能总结要点:

  

目录

  因为python中的所有类都默认继承object类。

  object类提供了许多原始的内置属性和方法,因此用户定义的类将继承Python中的这些内置属性。

  您可以使用dir()函数来查看它。虽然python提供了很多内置属性,但在实际开发中并不常用。但是系统提供的很多内置属性都需要重写,用户才能在实际开发中使用。

  对于python来说,属性或函数可以理解为属性。

  

引言

  1.重写__getattribute__方法

  班级学生(对象):

  类别country=china #的属性不会放在__dict__中

  def __init__(自己,姓名,年龄):

  self.name=name

  年龄=年龄

  DEF _ _ GetAttribute _ _ (self,attr) : #注意:attr是传入的属性名,不是属性值。

  打印(“启动属性验证的拦截功能”)

  打印(属性)

  返回对象。_ _ getattribute _ _ (self,attr) #返回属性名

  s1=学生(“汤姆”,19岁)

  Print (student.country,s1.country,s1.name,s1.age) #调用属性将调用__getattribute__方法。

  注意结果,属性被调用了四次,但是只有__getattribute__方法被调用了三次。

  启动属性验证拦截功能。

  国家

  启动属性验证拦截功能。

  名字

  启动属性验证拦截功能。

  年龄

  中国中国汤姆19

  分析摘要:

  1.__getattribute__是一个属性访问拦截器,即当这个类的属性被实例访问时,会自动调用该类的__getattribute__方法。

  当一个实例调用一个属性,比如s1.name,它会把名称作为参数传入__getattribute__方法,经过一系列操作后,它会返回名称的处理结果。

  只要在Python中定义了继承object的类,默认都有一个属性拦截器,但是拦截之后不做任何事情,直接返回。所以我们可以自己重新编写__getattribute__方法来实现相关功能,比如查看权限,打印日志日志等。

  2.如果__getattribute__被重写,该类将调用被重写的方法,因此该方法必须有一个return返回值以返回传入的属性,否则,调用该属性将失败。

  3.注意,如果以类名和类属性的形式直接调用class属性,将不会调用__getattribute__方法。

  

1.内建属性__getattribute__的用法

  班级学生(对象):

  类别country=china #的属性不会放在__dict__中

  def __init__(自己,姓名,年龄):

  self.name=name

  年龄=年龄

  DEF _ _ GetAttribute _ _ (self,attr) : #注意:attr是传入的属性名,不是属性值。

  打印(“启动属性验证的拦截功能”)

  打印(属性)

  Ifattr== name 3360 #注意,这里引用的原属性名不是self,可以直接引用。

  Print(现在调用name属性)

  elif attr==age:

  Print(现在调用age属性)

  else:

  Print(“现在正在调用其他属性”)

  返回对象。_ _ getattribute _ _ (self,attr) #返回属性名

  s1=学生(“汤姆”,19岁)

  打印(s1 .姓名,s1 .年龄,s1 .国家)

  结果如下:

  启动属性验证拦截功能。

  名字

  现在name属性被调用。

  启动属性验证拦截功能。

  年龄

  现在年龄属性被称为。

  启动属性验证拦截功能。

  国家

  现在其他属性被称为。

  汤姆19中国

  

2.重写__getattribute__实现属性拦截功能

  1._ _ getattribute _ _ (self,*args,**kwgs)传入的参数是属性名,而不是属性值。很多初学者都有误区。

  2.使用类名调用类属性时,不会经过__getattribute__方法,只争取实例对象调用属性,包括调用类属性。

  3.__getattribute__是一个属性拦截器。属性调用将被传入并处理。最后,应该有返回值。传入的属性将被处理并返回给调用者。

  以上是Python内置属性getattribute拦截器的详细说明。关于Python内置属性getattribute拦截器的更多信息,请关注盛行的IT软件开发工作室的其他相关文章!

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

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