这篇教程Python中的getattr、__getattr__、__getattribute__、__get__详解写得很实用,希望能帮到您。
getattrgetattr(object, name[, default]) 是Python的内置函数之一,它的作用是获取对象的属性。
示例 >>> class Foo:... def __init__(self, x):... self.x = x...>>> f = Foo(10)>>> getattr(f, 'x')10>>> f.x10>>> 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'
getattributeobject.__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.bamfgetting `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 = 12set value=12>>> print(s.age)get value=1212
总结本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注51zixue.net的更多内容! 深入了解Python中的时间处理函数 python运算符号详细介绍 |