property使用简介

by:授客 QQ:1033553122

功能简介

1) 把类方法变成只读属性

2) setter和getter的另一种实现

代码演示1

#!/usr/bin/env python

# -*- coding:utf-8 -*-

 

__author__ = 'shouke'

 

class User(object):

def __init__(self, username, password):

self._username =  username

self._password = password

@property

 def username(self):

 return self._username

@username.setter

def username(self, username):

self._username = username

@property

def password(self):

return self._password

@password.setter

def password(self, password):

self._password = password

if __name__ == '__main__':

boy = User('shouke', 'shouke2014')

print('对象用户名:', boy.username)

boy.username = 'shou ke'

print('修改后的用户名:', boy.username)

print('通过修改属性值来修改密码')

boy._password = 2014

print('修改后的用户密码:', boy._password)

boy.password = 'shouke2016'

print('通过方法属性来修改密码,修改后的用户密码:', boy._password)

运行结果:

对象用户名: shouke

修改后的用户名: shou ke

通过修改属性值来修改密码

修改后的用户密码: 2014

通过方法属性来修改密码,修改后的用户密码: shouke2016

注意:

1、@property和@function.setter需要成对使用,如下

@property

def function_name

@function.setter

def function_name(self, attribute)

2、如果变量属性值和方法属性值相同,那么以下情况下是无法完成初始化函数 __init__ 中的赋值操作的,即无法初始化对象

代码演示2

#!/usr/bin/env python
#
-*- coding:utf-8 -*-


__author__
=
'shouke'


class

Tester(object):
    def

__init__(self,
name, sex, title):
        self.name
= name
        self.sex
= sex
        self.title
= title

@property
    def

name(self):
        return

self.name

@property
    def

sex(self):
        return
 
self.sex

@property
    def

title(self):
        return

self.title

@title.setter
    def

title(self,

title):
        self.title
=
title

if

__name__ ==
'__main__'
:
    tester
= Tester('shouke',

'M'
,

'Tester'
)
    print(tester.title)

"D:\Program
Files\python33\python.exe" E:/Projects/untitled/py1.py

Traceback (most recent call last):

File
"E:/Projects/untitled/py1.py", line 30, in

tester
= Tester('shouke', 'M', 'Tester')

File
"E:/Projects/untitled/py1.py", line 8, in __init__

self.name
= name

AttributeError: can't set attribute

Python property使用简介的更多相关文章

  1. python property详解

    Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情.在这篇文章中,我们将看到如何能做以下几点: 将类方法转换为只读属性 重新实现一个属性的setter和getter ...

  2. python property

    python property 在2.6版本中,添加了一种新的类成员函数的访问方式--property. 原型 class property([fget[, fset[, fdel[, doc]]]] ...

  3. Python生态环境简介[转]

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  4. python property装饰器

    直接上代码: #!/usr/bin/python #encoding=utf-8 """ @property 可以将python定义的函数“当做”属性访问,从而提供更加友 ...

  5. Python @property 详解

    本文讲解了 Python 的 property 特性,即一种符合 Python 哲学地设置 getter 和 setter 的方式. Python 有一个概念叫做 property,它能让你在 Pyt ...

  6. (转)python生态环境简介

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  7. Python property() 函数

    Python property() 函数  Python 内置函数 描述 property() 函数的作用是在新式类中返回属性值. 语法 以下是 property() 方法的语法: class pro ...

  8. Python 3 mysql 简介安装

    Python 3 mysql 简介安装 一.数据库是什么 1.  什么是数据库(DataBase,简称DB) 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据 ...

  9. python property用法

    参考 http://openhome.cc/Gossip/Python/Property.html http://pyiner.com/2014/03/09/Python-property.html ...

随机推荐

  1. Ubuntu下安装和使用开源的tts软件Flite

    Flite是什么? Flite是一个小型.快速的TTS系统,是festival的C版本,可用于嵌入式系统,支持WinCE.Palm OS 等. 下载方法: wget http://www.festvo ...

  2. python 实现wav的波形显示(时域和频域)

    音频处理中,经常要看一下啊频域图是什么样子的,这里自己写了一个小程序,可以完美的同步显示时域和频域图,直接上代码: #wave data -xlxw #import import wave as we ...

  3. ubuntu 16.04下安装ADB

    1. 安装adb工具. 从谷歌的网站下载LINUX adb调试工具(FQ),当然可以随便百度一个一大堆. http://developer.android.com/tools/device.html ...

  4. 使用线程统计信息(Thread Statistics)

    可在session log中使用线程统计信息来判断source,target或组的性能瓶颈 默认情况下,Integration Service在运行session时,使用一个reader thread ...

  5. CSS box-sizing属性

    全文摘抄自 https://developer.mozilla.org/zh-CN/docs/Web/CSS/box-sizing 专门抄一遍是因为,我想当然的以为标准盒子模型设置的宽高是包括padd ...

  6. mysql 开发基础系列2 整型数据类型

    Mysql 的数据类型 1. 对整数类型, Mysql 还支持类型名称后面的小括号内指定的显示宽度,例如int(5) 表示宽度小于5位时填满宽度,如果不显示指定宽度默认是int(11),一般配合zer ...

  7. python 分享一个通过 (key1.key2.key3) 形式获取嵌套字典值的方法

    最近在做接口自动化测试,响应的内容大多数是多层嵌套的json数据,如果一层层的去剥,效率不高,脚本繁重,所以写了一个可以通过(key1.key2.key3)形式获取嵌套字典值的方法,如有不对或者需要优 ...

  8. iOS逆向开发(1):基础工具 | ssh | scp | socat

    小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情 ...

  9. mycat 从入门到放弃 (转)

    http://blog.csdn.net/u013235478/article/details/53178657   1.非分片字段查询 Mycat中的路由结果是通过分片字段和分片方法来确定的.例如下 ...

  10. 野路子Java开发的一篇随笔

    园子的朋友们,一年半的时间大家过的还好吧?       流水它带走光阴的故事改变了我们,再次的见面我们又历经了多少的路程,落花流水,冷暖自知,这一年半,关于工作上的关键词只有两个:加班(996弱多了) ...