[读书]Python学习手冊--属性管理1
属性管理-特性
一般开发这不必关心属性的实现。对工具的构建这来说,了解这一块对API的灵活性有帮助。
大多数情况下,属性位于对象自身之中。或者继承自对象所派生自的一个类。 ----python学习手冊
property
property(fget=None, fset=None, fdel=None, doc=None) -> property attribute
fget is a function to be used for getting an attribute value, and likewisefset is a function for setting, and fdel a function for del’ing, an attribute.
能够使用函数的方式也能够使用装饰器的方式来使用
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#property.py @2014-07-26
#author: orangleliu class Person(object):
def __init__(self, name):
self._name = name def getName(self):
print 'fetch....'
return self._name def setName(self, value):
print 'change...'
self._name = value def delName(self):
print 'remove....'
del self._name #也能够使用装饰器的方式
name = property(getName, setName, delName, "name property docs") bob = Person('Bob')
print bob.name
print Person.name.__doc__
bob.name = 'bob'
print bob.name
del bob.name
#print bob.name '''
并没有想象中的那么好使 #类没有继承object的情况下
fetch....
Bob
name property docs
bob
set del 就没有使用啊 #类继承object的情况下
Bob
name property docs
change...
fetch....
bob
remove....
'''
书中的样例并没有继承object, 使用2.7的版本号和书中结果不一致。 须要继承object才干达到预期的结果
加入属性的默认操作
这里使用装饰的方式, 仅仅要value赋值就进行一个默认的操作。能够看到我们使用属性的方式就能够默认调用函数来处理属性。
g.value 而不是 g.valueXX()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#property.py @2014-07-26
#author: orangleliu class GetSquare(object):
def __init__(self, num):
self.value = num @property
def value(self):
return self._value @value.setter
def value(self, num):
self._value = num**2 '''
从上面能够看到set属性值的时候作了一些属性的某人动作,有时候非常有必要
''' g = GetSquare(4)
print g.value g.value = 10
print g.value
事实上这样的方式非常类似于javabean中的方式。
[读书]Python学习手冊--属性管理1的更多相关文章
- Python学习手冊笔记
之前为了编写一个svm分词的程序而简单学了下Python.认为Python非常好用.想深入并系统学习一下,了解一些机制,因此開始阅读<Python学习手冊(第三版)>. 假设仅仅是想高速入 ...
- Java开发手冊 Java学习手冊教程(MtJava开发手冊)
本文档的版权归MtJava文档小组全部,本文档及其描写叙述的内容受有关法律的版权保护,对本文档内容的不论什么形式的非法复制.泄露或散布.将导致对应的法律责任. MtJava仅仅是一个学习Java的简化 ...
- docker 学习手冊-中文版下载
这个PDF算是学习docker的一个小总结,全部文章摘自我在csdn的博客专栏: http://blog.csdn.net/column/details/docker.html 第一章到第八章摘自do ...
- python学习-62 类属性的增 删 该 查
类属性 1.类属性 类属性又称为静态变量,或者是静态数据.这些数据是与它们所属的类对象绑定的,不依赖于任何类实例. 2.增 删 改 查 class zoo: country = 'china' def ...
- Redis学习手冊(事务)
一.概述: 和众多其他数据库一样,Redis作为NoSQL数据库也相同提供了事务机制. 在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石. 相 ...
- Python中的属性管理
Python管 理属性的方法一般有三种:操作符重载(即,__getattr__.__setattr__.__delattr__和 __getattribute__,有点类似于C++中的重载操作符).p ...
- 包管理器Bower使用手冊之中的一个
包管理器Bower使用手冊之中的一个 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Bower介绍 Bower是一个适合Web应用的包管理器,它擅长 ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- Python之路【第二十四篇】:Python学习路径及练手项目合集
Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...
随机推荐
- How to check Open vSwitch version and supports OpenFlow version
Open vSwitch (OVS) is an open-source virtual switch, featuring programmable switch forwarding capabi ...
- vim 跳转指定行
在编辑模式下输入 ngg 或者 nG n为指定的行数(如25) 25gg或者25G 跳转到第25行. 在命令模式下输入行号n : n 如果想打开文件即跳转 vim +n FileName 查看当然光标 ...
- Java IO(三) 之 FileInputStream
前言: 对于文件系统中的文件.都能够使用FileInputStream流类以二进制的形式进行读取.可是因为Java本身的定位在JVM之上,没有处理计算机底层的能力.因此一些涉及底层处理的方法都是使用n ...
- HDU 4321 Contest 3
题意:给定a和b,n,让你求b+a, b+2*a, .......b+n*a里面有多少1. 当统计第K位的时候 可以注意到 第 B+T*A 和 B+(T+2^(K+1))*A 位是相同的 那么 第K位 ...
- atitit。流程图的设计与制作 attilax 总结
atitit.流程图的设计与制作 attilax 总结 1. 流程图的规范1 2. 画图语言2 2.1. atitit.CSDN-markdown编辑器2 2.2. js-sequence-diagr ...
- C++基础学习教程(三)
承接上一讲. 2.7文件I/O 关于读写文件,C++中有一个专门的头文件<fstream>. 首先是读文件演示样例,例如以下: </pre><pre> /***** ...
- OPENWRT中SSH免密钥登陆(具体步骤)
通过使用ssh-keygen生成公钥,在两台机器之间互相建立新人通道极客. 如果本地机器是client,远程机器为server. 1.使用ssh-keygen生成rsa keygen(在这里会覆盖曾经 ...
- 每一个JavaScript开发者都应该知道的10道面试题
JavaScript十分特别.而且差点儿在每一个大型应用中起着至关关键的数据.那么,究竟是什么使JavaScript显得与众不同,意义非凡? 这里有一些问题将帮助你了解其真正的奥妙所在: 1.你能 ...
- 安卓 使用Gradle生成正式签名apk文件
1. 进入app中的build.gradle下面进行配置 2.进入Gradle下面选择clean和assembleRelese,双击 3.生成成功,前往查看 4.加密更安全
- 三个获取浏览器URL中参数值的方法
这三个是一般的获取浏览器传的参数值的方法,之前有用unescape()解码的方法,但是遇到汉字会产生乱码,所以用decodeURI(); 方法一: function getQueryString(na ...