Python 基础之面向对象之装饰器@property
一.定义
装饰器@property
可以把方法变成属性使用
作用: 控制类内成员的获取 设置 删除
获取 @property
设置 @自定义名.setter
删除 @自定义名.deleter
二.具体实现
1.方法一
class MyClass():
def __init__(self,name):
self.name = name
#获取
@property
def username(self):
return self.name
#设置
@username.setter
def username(self,val):
self.name = val
#删除
@username.deleter
def username(self):
del self.name
obj = MyClass("ONE")
# 获取
print(obj.username)
# 设置
obj.username = "two"
print(obj.username)
# 删除 del 调用删除相关的方法
del obj.username
# print(obj.username)
=============================
2.方法二
class MyClass2():
def __init__(self, name):
self.name = name
# 获取值的方法
def get_usrname(self):
return self.name
# 设置值的方法
def set_username(self, val):
self.name = val
#删除值的方法
def del_username(self):
del self.name
# 在类加载的时候,自动把这些方法当成函数进行传递,不是在调用时出发的
# property接收三个参数,必须按照:
# (1)获取值的方法
# (2)设置值的方法
# (3)删除值的方法
username = property(get_usrname, set_username, del_username)
address = property(get_usrname, set_username, del_username)
print("=======================")
obj = MyClass2("Three")
#获取当前username
print(obj.username)
#设置值
obj.username = "four"
#获取值
print(obj.username)
#删除值
del obj.username
#print(obj.username)
obj.address = "China"
print(obj.address)
del obj.address
Python 基础之面向对象之装饰器@property的更多相关文章
- 十一. Python基础(11)—补充: 作用域 & 装饰器
十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...
- Python基础(八)装饰器
今天我们来介绍一下可以提升python代码逼格的东西——装饰器.在学习装饰器之前我们先来复习一下函数的几个小点,方便更好的理解装饰器的含义. 一.知识点复习 1, 在函数中f1和f1()有什么不同,f ...
- Day4 - Python基础4 迭代器、装饰器、软件开发规范
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- python基础16_闭包_装饰器
不了解是否其他语言也有类似 python 装饰器这样的东西. 最近才发现ECMAScript6也是有生成器函数的,也有 yield generator 装饰器的基础知识是闭包: # 闭包:嵌套函数, ...
- 11.python描述符---类的装饰器---@property
描述符1.描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()这三个内置方法中的一个,描述符也被称为描述符协议(1):__ ...
- python基础知识-11-函数装饰器
python其他知识目录 1.装饰器学习前热身准备 1.1装饰器简介 1.2装饰器热身分析 ) def func(): pass v1 = v2 = func #将函数名赋予一个变量,就和变量赋值是同 ...
- Python的私有变量与装饰器@property的用法
Python的私有变量是在变量前面加上双横杠(例如:__test)来标识, Python私有变量只能在类内部使用,不被外部调用,且当变量被标记为私有后,调用时需再变量的前端插入类名,在类名前添加一个下 ...
- python基础(八)生成器,迭代器,装饰器,递归
生成器 在函数中使用yield关键字就会将一个普通的函数变成一个生成器(generator),普通的函数只能使用return来退出函数,而不执行return之后的代码.而生成器可以使用调用一个next ...
- Python全栈开发之路 【第五篇】:Python基础之函数进阶(装饰器、生成器&迭代器)
本节内容 一.名称空间 又名name space,就是存放名字的地方.举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方. 名称空间共3种,分别如下 ...
随机推荐
- 解决tomcat控制台乱码问题
问题原因:编码不一致,tomcat启动后默认编码UTF-8,而windows的默认编码是GBK.所以只需配置启动tomcat后为GBK编码即可. 做法:找到路径 $xxx$\apache-tomcat ...
- js语言简介
JS语言概述 JS语言简史 JS语言的起源 网景(Netscape Communication Corperation),1994年,推出第一款商用浏览器,网景浏览器(Netscape Navigat ...
- 鬼斧神工:求n维球的体积
原文地址:http://spaces.ac.cn/archives/3154/ 原文作者:苏剑林 标准思路 简单来说,\(n\)维球体积就是如下\(n\)重积分 \[V_n(r)=\int_{x_1^ ...
- mybatis--MyBatis动态SQL语句
mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...
- Go_file操作
1. FileInfo package main import ( "os" "fmt" ) func main() { /* FileInfo:文件信息 in ...
- Go递归
1. 递归介绍 package main import ( "fmt" ) func test(n int) { if n > 2 { n-- test(n) } fmt.P ...
- Go常量
1. 常量 package main import "fmt" func main() { /* 常量: 1.概念:同变量类似,程序执行过程中数值不能改变 2.语法: 显式类型定义 ...
- Linux kali添加root用户密码
1.1.打开终端 2.输入命令: sudo passwd root
- linux 磁盘100% 清理
df -h 查看磁盘使用有一个vdb满了 df -i 查看inode 使用率 显示文件大小: du -sh /* du参数: -a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而 ...
- Docker学习笔记(1):CentOS7安装Docker
Docker是一个基于Go语言实现的开源应用容器引擎,通过对应用组件的封装.分发.部署.运行等生命周期的管理,使程序及其运行环境能够做到"一次封装,到处运行". Docker架构 ...