Python @property装饰器原理解析
作者:xiaobaizzZ 发布时间:2022-02-19 20:28:05
标签:python,property,装饰器
这篇文章主要介绍了Python @property装饰器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.通过@property装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。
class Person:
def __init__(self, name):
self.__name = name
@property
def say(self):
return self.__name
xioabai = Person("xiaobai")
#直接通过方法名来访问say方法
print("我的名字是:", xiaobai.say)
我的名字是: xiaobai
上面程序中,使用@property修饰了say()方法,这就使得该方法变成了name属性的getter方法。
2.使用setter装饰器,可以为say方法添加setter方法。
class Person:
def __init__(self, name):
self.__name = name
@property
def say(self):
return self.__name
@say.setter
def say(self, value):
self.__name = value
xiaobai = Person("xiaobai")
xiaobai.say = "xiaohei"
print("我的名字其实是:", xiaobai.say)
我的名字其实是: xiaohei
3.使用deleter装饰器来删除指定属性,可以为say方法添加deleter方法
class Person:
def __init__(self, name):
self.__name = name
@property
def say(self):
return self.__name
@say.setter
def say(self, value):
self.__name = value
@say.deleter
def say(self):
self.__name = "xxx"
xiaobai = Person("xiaobai")
del xiaobai.say
print("我的名字其实是:", xiaobai.say)
我的名字其实是: xxx
来源:https://www.cnblogs.com/xiaobaizzz/p/12227463.html
0
投稿
猜你喜欢
- 今天我要讲如何远程调试openstack。首先我们使用的工具是Pycharm.1.首先介绍一下环境我的openstack是使用rdo一键安装
- 看看下面这个刚才提到的下拉列表的例子,就是将Application Object作为一个变量用来存储下拉列表的菜单项的:<%=&nbs
- 1. 安装Pyechartspip install pyecharts2. 图表基础2.1 主题风格添加主题风格使用的是 InitOpts(
- 爬虫请求头网页获取:通过urlopen来进行获取requset.urlopen(url,data,timeout)第一个参数url即为URL
- PHP simplexml_load_file() 函数实例转换 XML 文件为 SimpleXMLElement 对象,然后输出对象的键和
- 1.创建tfrecordtfrecord支持写入三种格式的数据:string,int64,float32,以列表的形式分别通过tf.trai
- 前言今天我的 PyCharm 突然间就死掉了,双击图标,等半天没有反应,也没有抛出什么错误。打开任务管理器,发现双击时启动了一个PyChar
- 匹配文本并在其上一行追加文本问题描述Python匹配文本并在其上一行追加文本test.txtabcde1.读进列表后覆盖原文件 d
- 函数嵌套,这个名字有点纠结,也许不太好理解。一个比较常见的函数嵌套特例:递归函数,即函数自己嵌套自己。 一直以为在PHP中不能有太多的函数嵌
- 前言本文主要给大家介绍了关于python指定时间调用函数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:在前面的一
- 本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项。本篇阅读的代码片段来自于30-seco
- 这篇文章主要介绍了python框架django项目部署相关知识详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- Dreamweaver MX 2004新增加了表格宽度辅助线功能,让我们在编辑网页表格的时候能清楚地看到表格中各单元的宽度以及变化,很直观。
- 1.打开 database/migrations/2014_10_12_000000_create_users_table.php 这个 m
- 网页兼容测试,除了做不同浏览器的兼容测试,还要观察网页在不同分辨率下的表现情况。在页面中使用了CSS绝对定位,发现在宽屏下错位。随后测试非1
- 问题一:将u'\u810f\u4e71'转换为'\u810f\u4e71'方法:s_unicode = u&
- list/tuple转置:以二维grid[][]为例:grid = [[row[i] for row in grid] for i in r
- 最近给卫生局做一个表格上传/可视化系统,算是小有成果。今天把项目中的文件拖拽上传模块分离出来,做了一个独立的小demo,并把相关代码打包上传
- 交待:使用的软硬件环境为Win XP SP2、SQL Server 2000 SP2个人版、普通双核台式机、1000M局域网,A机为已使用的
- 这个问题用了我整整一晚上的时间才解决,希望有人遇到和我一样的时能少走些弯路。启动Django,服务器拒绝访问,可以尝试以下方法解决:1. 没