大蟒蛇python教程共享Python中的getattr,__getattr__,__getattribute__和__get__详解

目录
  • getattr
  • __getattr__
  • getattribute
  • get
  • 总结

getattr

getattr(object, name[, default])是python的内置函数之一,它的作用是获取对象的属性。

示例

  >>> class foo:  ...     def __init__(self, x):  ...         self.x = x  ...  >>> f = foo(10)  >>> getattr(f, 'x')  10  >>> f.x  10  >>> getattr(f, 'y', 'bar')  'bar'  

__getattr__

object.__getattr__(self, name)是一个对象方法,当找不到对象的属性时会调用这个方法。

示例

  >>> class frob:  ...     def __init__(self, bamf):  ...         self.bamf = bamf  ...     def __getattr__(self, name):  ...         return 'frob does not have `{}` attribute.'.format(str(name))  ...  >>> f = frob("bamf")  >>> f.bar  'frob does not have `bar` attribute.'  >>> f.bamf  'bamf'  

getattribute

object.__getattribute__(self, name)是一个对象方法,当访问某个对象的属性时,会无条件的调用这个方法。该方法应该返回属性值或者抛出attributeerror异常。

示例

  >>> class frob(object):  ...     def __getattribute__(self, name):  ...         print "getting `{}`".format(str(name))  ...         return object.__getattribute__(self, name)  ...  >>> f = frob()  >>> f.bamf = 10  >>> f.bamf  getting `bamf`  10  

get

__get__()方法是描述器方法之一。描述器用于将访问对象属性转变成调用描述器方法。

示例

  >>> class descriptor(object):  ...     def __get__(self, obj, objtype):  ...         print("get value={}".format(self.val))  ...         return self.val  ...     def __set__(self, obj, val):  ...         print("set value={}".format(val))  ...         self.val = val  ...  >>> class student(object):  ...     age = descriptor()  ...  >>> s = student()  >>> s.age = 12  set value=12  >>> print(s.age)  get value=12  12  

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注<计算机技术网(www.ctvol.com)!!>的更多内容!

需要了解更多python教程分享Python中的getattr,__getattr__,__getattribute__和__get__详解,都可以关注python教程分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/pythontutorial/996438.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐