Python __getattr__与__setattr__使用方法

来源:互联网 发布:js a disabled属性 编辑:程序博客网 时间:2024/05/21 19:46
#比较好的例子
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] = valuej=JsonDict(name='python',age='28')print j.nameprint 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 = 100print c.nameprint c.valueprint cprint 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

0 0
原创粉丝点击