python property
2015-12-23 19:43
639 查看
python在内置模块__builtin__中有一个类property
class C(object):
| def getx(self): return self._x
| def setx(self, value): self._x = value
| def delx(self): del self._x
| x = property(getx, setx, delx, "I'm the 'x' property.")
|
| Decorators make defining new properties or modifying existing ones easy:
|
| class C(object):
| @property
| def x(self):
| "I am the 'x' property."
| return self._x
| @x.setter
| def x(self, value):
| self._x = value
| @x.deleter
| def x(self):
| del self._x
使用方法大概就是上面所示的两种了
举个例子如下:
执行结果为:
没看到property的源代码,自己按照自己所想,实现一个实现property的简单的类, 如下:
示例代码如下:
class C(object):
| def getx(self): return self._x
| def setx(self, value): self._x = value
| def delx(self): del self._x
| x = property(getx, setx, delx, "I'm the 'x' property.")
|
| Decorators make defining new properties or modifying existing ones easy:
|
| class C(object):
| @property
| def x(self):
| "I am the 'x' property."
| return self._x
| @x.setter
| def x(self, value):
| self._x = value
| @x.deleter
| def x(self):
| del self._x
使用方法大概就是上面所示的两种了
举个例子如下:
class test: def __init__(self): self.__name = None @property def name(self): #self.__name = None return self.__name @name.setter def name(self, value): if value < 0: print 'value negative' return self.__name = value t = test() print t.name t.name = -5 print t.name t1 = test() print t1.name t1.name = 100 print t1.name@property修饰了类方法后,类实例化后,我们可以像访问实例属性一样访问被修饰的方法(这些方法经过修饰后,其实就变成了一个property对象,property对象中含有被修饰的几种方法)
执行结果为:
None #print t.name value negative # t.name = -5 None # print t.name None # print t1.name 100 # print t1.name
没看到property的源代码,自己按照自己所想,实现一个实现property的简单的类, 如下:
class myproperty(object): def __init__(self, getx=None, setx=None, delx=None, doc=None): self.getx = getx self.setx = setx self.delx = delx self.__doc__ = doc def getter(self, getx): return type(self)(getx, self.setx, slef.delx, self.__doc__) def setter(self, setx): return type(self)(self.getx, setx, self.delx, self.__doc__) def __get__(self, instance, owner): if self.getx: return self.getx(instance) return None def __set__(self, instance, value): if self.setx: return self.setx(instance,value)
示例代码如下:
class test1(object): def __init__(self): self.__name = None @myproperty def name(self): return self.__name @name.setter def name(self, value): if value < 0: print 'value negative' return self.__name = value t = test1() print t.name t.name = -15 t.name = 67 print t.name t1 = test1() print t1.name t1.name = 25 print t1.name执行结果如下:
None # print name value negative #t.name = -15 67 # print t.name None # print t1.name 25 # print t1.name
相关文章推荐
- win下实现Python通过rpy2调用R
- Python基础教程之第2章 列表和元组
- python collections.Counter笔记
- 机器学习学习笔记(二)——回归
- python urllib 和urllib2的区别
- Python 网页爬虫、 文本处理、 科学计算 、机器学习、数据挖掘 兵器谱
- python语言基础学习
- python包管理(distutils、easy_install、pip、setup.py/requirements.txt、wheel)
- python之文本爬虫
- Python调用win7系统exe程序
- Python代码格式化工具YAPF详解
- SUSE10 SP4源码升级python到2.6.6
- Json概述以及python对json的基本操作
- writing idiomatic python 读书笔记(4)
- python 时间转换
- python爬虫:抓取乌云厂商url
- 零基础入门学习Python(18):对象(3)继承
- python知识-模块和包
- Python编程(一):Python中tuple和list的一点思考
- python中的多线程