Python property使用简介
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
最新文章
- Codeforces Round #388 (Div. 2)
- Tomcat8安装, 安全配置与性能优化
- Android Junit测试框架
- NUI控件扩展
- [Error] Error parsing XML: unbound prefix
- LIST动态表格画线(动态列)
- 注解配置springMvc及向作用域中赋值
- 【转】PHP 之 CURL 模拟登陆并获取数据
- perl编程中的map函数示例
- 我的Modbus Slave/Client开发历程(Rtu/AscII/Tcp)
- 四、XML映射配置文件
- 《SDN核心技术剖析和实战指南》3.1控制器核心技术读书笔记
- HDU 1201
- Vue不能检测数组或对象变动问题的解决
- 浅谈Pool对象
- keil5一点project就闪退
- 【ZJOI2012】灾难
- java 分隔函数split(";";,-1)的用途
- Oracle根据【日期】组,其他条件根据PIVOT行转列。使每个日期条件关联的其他数据只有一行。
- 直接存储器存取(Direct Memory Access,DMA)详细讲解
热门文章
- 部署 HTTPS 访问 ( https:// )
- 转转RN工程化历程
- excel表格中打开可以显示整个表格但是打印却只能打印一个单元格
- mysql 开发进阶篇系列 13 锁问题(关于表锁,死锁示例,锁等待设置)
- mysql 开发基础系列11 存储引擎memory和merge介绍
- Android--UI之GridView
- CentOS5/6/7系统下搭建安装Amabari大数据集群时出现SSLError: Failed to connect. Please check openssl library versions.错误的解决办法(图文详解)
- SpringCloud学习5-如何创建一个服务提供者provider
- Python中编码和字符串
- 微软改名部又出动啦!微软宣布VSTS改名为Azure DevOps