属性管理-特性

一般开发这不必关心属性的实现。对工具的构建这来说,了解这一块对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的更多相关文章

  1. Python学习手冊笔记

    之前为了编写一个svm分词的程序而简单学了下Python.认为Python非常好用.想深入并系统学习一下,了解一些机制,因此開始阅读<Python学习手冊(第三版)>. 假设仅仅是想高速入 ...

  2. Java开发手冊 Java学习手冊教程(MtJava开发手冊)

    本文档的版权归MtJava文档小组全部,本文档及其描写叙述的内容受有关法律的版权保护,对本文档内容的不论什么形式的非法复制.泄露或散布.将导致对应的法律责任. MtJava仅仅是一个学习Java的简化 ...

  3. docker 学习手冊-中文版下载

    这个PDF算是学习docker的一个小总结,全部文章摘自我在csdn的博客专栏: http://blog.csdn.net/column/details/docker.html 第一章到第八章摘自do ...

  4. python学习-62 类属性的增 删 该 查

    类属性 1.类属性 类属性又称为静态变量,或者是静态数据.这些数据是与它们所属的类对象绑定的,不依赖于任何类实例. 2.增 删 改 查 class zoo: country = 'china' def ...

  5. Redis学习手冊(事务)

    一.概述:       和众多其他数据库一样,Redis作为NoSQL数据库也相同提供了事务机制. 在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石. 相 ...

  6. Python中的属性管理

    Python管 理属性的方法一般有三种:操作符重载(即,__getattr__.__setattr__.__delattr__和 __getattribute__,有点类似于C++中的重载操作符).p ...

  7. 包管理器Bower使用手冊之中的一个

    包管理器Bower使用手冊之中的一个 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Bower介绍 Bower是一个适合Web应用的包管理器,它擅长 ...

  8. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  9. Python之路【第二十四篇】:Python学习路径及练手项目合集

      Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...

随机推荐

  1. Linux系统串口接收数据编

    http://blog.csdn.net/bg2bkk/article/details/8668576 之前基于IBM deveplopworks社区的代码,做了串口初始化和发送的程序,今天在此基础上 ...

  2. django-4-模板标签,模板继承

    <<<模板标签>>> {% for %}{% endfor %} 循环 {% if %}{% elif %}{% else %}{% endif %} 判断 {% ...

  3. tp 在Nginx上各种404

    对于ThinkPHP的URL访问路劲如:http://域名/index.php/Index/BlogTest/read,原先的Nginx的是不支持的pathinfo路劲的,导致你在thinkPHP5上 ...

  4. synchronized与static synchronized 的差别、synchronized在JVM底层的实现原理及Java多线程锁理解

    本Blog分为例如以下部分: 第一部分:synchronized与static synchronized 的差别 第二部分:JVM底层又是怎样实现synchronized的 第三部分:Java多线程锁 ...

  5. Java 递归、尾递归、非递归 处理阶乘问题

    n!=n*(n-1)! import java.io.BufferedReader; import java.io.InputStreamReader; /** * n的阶乘,即n! (n*(n-1) ...

  6. leetcode 题解 || Longest Common Prefix 问题

    problem: Write a function to find the longest common prefix string amongst an array of strings. 寻找 0 ...

  7. poj_1952最大下降子序列,统计个数

    其实不算难的一道题,但憋了我好久,嗯,很爽. #include<iostream> #include<cstdio> #include<string.h> #inc ...

  8. 实现一个类似360的button

    通过改写一个buttonst类,实现360效果的button. 主要可以完成:frame,hover,face效果,并且支持menu,tooltips 1)派生新的类QButton.添加虚函数,设置自 ...

  9. 《汇编语言(第三版)》cmp指令

    # cmp指令 本质 cmp是比较指令,cmp的功能相当于减法. 格式 cmp 操作对象1,操作对象2 功能 计算操作对象1-操作对象2,但并不保存结果,可以根据flag标志寄存器来判断结果. 正向判 ...

  10. Android程序能够构建和运行,但是报以下报错,为什么?

    安卓程序写完之后能够构建和运行,但是会报以下的错误.不知道原因为何?求大神解答. 网上说的是混淆编译的原因,不过程序没有开启混淆编译. Error:warning: Ignoring InnerCla ...