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')
目录
- 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中的getattr、__getattr__、__getattribute__、__get__详解
- python线程池ThreadPoolExecutor与进程池ProcessPoolExecutor 2023-09-04
- python中列表添加元素的几种方式(+、append()、ext 2022-09-02
- 在centos6.4下安装python3.5 2023-09-04
- Python Pandas如何获取和修改任意位置的值(at,iat,loc,iloc) 2023-08-04
- Python 保存数据的方法(4种方法) 2023-09-04
- Python之路-Python中的线程与进程 2023-09-04
- Python实现将DNA序列存储为tfr文件并读取流程介绍 2022-10-20
- windows安装python2.7.12和pycharm2018教程 2023-09-03
- python中defaultdict用法实例详解 2022-10-20
- CentOS7 安装 Python3.6 2023-09-04