Python __getattr__与__setattr__使用方法

转载 2015年11月19日 22:30:01
#比较好的例子
class JsonDict(dict):
    def __getattr__(self,attr):
        try:
            return self[attr]
        except KeyError:
            raise AttributeError(r"'JsonDict' object has no attribute '%s'" % attr)

    #可以重写dict,使之通过“.”调用  
    def __setattr__(self,attr,value):
        self[attr] = value

j=JsonDict(name='python',age='28')
print j.name
print j.age



class Book(object):
    def __setattr__(self, name, value):
        if name == 'value':
            object.__setattr__(self, name, value - 100)
        else:
            object.__setattr__(self, name, value)
    def __getattr__(self, name):
        try:
            return object.__getattribute__(name)
        except:
            return name + ' is not found!'
    def __str__(self):
        return self.name + ' cost : ' + str(self.value)

c = Book()
c.name = 'Python'
c.value = 100
print c.name
print c.value
print c
print c.Type

上面的例子中,在赋值书的value属性时,偷偷的将value减去了100,呵。输出结果:

Python
0
Python cost : 0
Type is not found! 


参考:http://www.cnblogs.com/coderzh/archive/2008/05/25/1206931.html

相关文章推荐

Python的hasattr() getattr() setattr() 函数使用方法详解

岑宇 历经苦难而不厌,此乃阿修罗之道! 博客园首页新随笔联系订阅管理 随笔 - 68  文章 - 2  评论 - 0 Python的hasattr() getattr(...

python __getattr__ 和 __setattr__方法、属性私有化

__getattr__方法 拦截点号运算。当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法。如果继承树可以找到该属性,则不调用此方法。 class empty: def...

python hasattr() getattr() setattr()函数的使用

hasattr(object,name):用于判断一个对象里中是否存在name这一特性.由测试结果可知,对象a里包含特性name和方法greet(),所以输出True,而不包含特性age,所以hasa...

python __setattr__, __getattr__, __delattr__,__getattribute__

参考资料           __setattr__、__getattr__和__delattr__以及__getattribute__可以拦截对对象属性的访问;        >>...

Python的getattr(),setattr(),delattr(),hasattr()

getattr()函数是Python自省的核心函数,具体使用大体如下: 获取对象引用getattr Getattr用于返回一个对象属性,或者方法 class A:        def _...

python 中getattr(object,name,default),setattr(object,name,default),hasattr(),delattr()

getattr()函数是Python自省的核心函数,具体使用大体如下: 获取对象引用getattr Getattr用于返回一个对象属性,或者方法 class A:        def __...

Python的getattr(),setattr(),delattr(),hasattr()

http://www.cnblogs.com/zhangjing0502/archive/2012/05/16/2503702.html getattr()函数是Python自省...

Python的getattr(),setattr(),delattr(),hasattr()

参考自:www.cnblogs.com/zhangjing0502/archive/2012/05/16/2503702.htmlgetattrgetattr()函数是Python自省的核心函数,具体...

Python的getattr(),setattr(),delattr(),hasattr()

getattr()函数是Python自省的核心函数,具体使用大体如下:获取对象引用getattr Getattr用于返回一个对象属性,或者方法class A: def __init__...

Python的getattr(),setattr(),delattr(),hasattr()

getattr()函数是Python自省的核心函数,具体使用大体如下: 获取对象引用getattr Getattr用于返回一个对象属性,或者方法 class A:    ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)