Python __getattr__与__setattr__使用方法

yipeiwu_com7年前Python基础
比如下面的例子:
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!

相关文章

利用Python+Java调用Shell脚本时的死锁陷阱详解

前言 最近有一项需求,要定时判断任务执行条件是否满足并触发 Spark 任务,平时编写 Spark 任务时都是封装为一个 Jar 包,然后采用 Shell 脚本形式传入所需参数执行,考虑...

python中List的sort方法指南

简单记一下python中List的sort方法(或者sorted内建函数)的用法。  List的元素可以是各种东西,字符串,字典,自己定义的类等。 sorted函数用法如下:...

如何使用django的MTV开发模式返回一个网页

如何使用django的MTV开发模式返回一个网页

1.MTV开发模式介绍 M:Models 模型(数据) 与数据组织相关的功能。组织和存储数据的方法和模式,与数据模型相关的操作。 T:Templates 模板(样式) 与表现相关的所有...

Python中super关键字用法实例分析

本文实例讲述了Python中super关键字用法。分享给大家供大家参考。具体分析如下: 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的...

如何利用python制作时间戳转换工具详解

前言: 时间戳的定义 Unix时间戳(Unix时间戳)或称Unix时间(Unix时间),POSIX时间(POSIX时间),是一种时间表示方式,定义为从格林威治时间1970年01月01日0...