Python中的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
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
相关文章
Python自动重新加载模块详解(autoreload module)
这篇文章主要介绍了Python自动重新加载模块详解(autoreload module),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-04-04
Python使用everything库构建文件搜索和管理工具
在这篇博客中,我将分享如何使用 Python 的 everytools库构建一个简单的文件搜索和管理工具,这个工具允许用户搜索文件、查看文件路径、导出文件信息到 Excel,以及生成配置文件,文中有相关的代码示例供大家参考,需要的朋友可以参考下2024-08-08
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
这篇文章主要介绍了python3.6.5基于kerberos认证的hive和hdfs连接调用方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06


最新评论