python学习笔记-2(OOP)
来源:互联网 发布:湖南有色行情分析软件 编辑:程序博客网 时间:2024/05/17 22:16
标签(空格分隔): Python
使用@property
在Python的官方帮助文档中有关于property类(built-in class)的说明(The Python Standard Library/2 Built-in Functions)
class Student(object): def __init__(self,name='empty'): self._name = name def get_name(self): return self._name def set_name(self,name): self._name = name def del_name(self): del self._name name = property(get_name, set_name, del_name, 'i am the property sample')foo = Student("xiaoming")print (foo.name)foo.name = 'haizhen'print (foo.name)del foo.name
通过上面的例子可以看出,property可以使得类属性的访问、设置即隐晦又直接(把普通的赋值语句与方法联系在一起)。因为property还可以作为装饰器,一个property对象有getter,setter,和deleter三个方法,因此对于上面的例子还可以有另外一种写法:
class Student(object): def __init__(self,name='empty'): self._name = name @property def name(self): return self._name @name.setter def name(self,name): self._name = name @name.deleter def name(self): del self._namefoo = Student("xiaoming")print (foo.name)foo.name = 'haizhen'print (foo.name)del foo.name
如果不定义setter那么就相当于是一个只读属性:
class Student(object): @property def birth(self): return self._birth @birth.setter def birth(self, value): self._birth = value @property def age(self): return 2015 - self._birth
上面的例子中,age就是只读的
练习:利用@property给一个Screen对象增加width与height属性,以及一个只读属性resolution
解答:
class Screen(object): @property def width(self): return self._width @width.setter def width(self,width): self._width = width @property def height(self): return self._height @height.setter def height(self,height): self._height = height @property def resolution(self): return self._height * self._widthbar = Screen()bar.width = 3480bar.height = 2160print(bar.resolution)
0 0
- python学习笔记-2(OOP)
- Python学习笔记(五)OOP
- python核心编程笔记(12)- OOP
- python学习-OOP
- 《Python学习手册》学习笔记(25)之第25章OOP:宏伟蓝图(关键词:编程语言/Python/面向对象/OOP)
- golang学习笔记[2] 面向对象OOP
- PHP学习笔记-OOP
- js oop学习笔记
- oop学习笔记之oop的认识
- php学习笔记9-(OOP)
- c#学习笔记-OOP技术
- Perl5的OOP学习笔记
- YUI 3 学习笔记:oop
- java OOP学习笔记 学习心得
- Python学习_面向对象(OOP)二:实现技巧
- 《Python学习手册》学习笔记(26)之第26章类代码编写基础(关键词:编程语言/Python/OOP/面向对象/类)
- 《Python学习手册》学习笔记(27)之第27章更多实例(关键词:编程语言/Python/OOP/面向对象)
- 《Python学习手册》学习笔记(28)之第28章类代码编写细节(关键词:编程语言/Python/OOP/面向对象/类)
- strstr模拟实现
- Fragment的addToBackStack()使用
- GMM的EM算法实现
- linux下安装oracle数据库
- Spring4 + Hibernate4集成Spring Data JPA
- python学习笔记-2(OOP)
- 用python开发股票自动技术分析的软件
- 【基于Cocos Creator+Socket.io的联机对战黑白棋(4)】——资源文件
- 【设计模式】
- CSS中的定位机制
- vs2012+opencv2.4.9
- jsp分页显示的代码与详细步骤
- ps-lite源码阅读笔记
- C语言作业