python中@property和property函数常见使用方法示例
作者:以梦为马越骑越傻 发布时间:2021-11-13 03:32:20
标签:python,@property,property函数
本文实例讲述了python中@property和property函数常见使用方法。分享给大家供大家参考,具体如下:
1、基本的@property使用,可以把函数当做属性用
class Person(object):
@property
def get_name(self):
print('我叫xxx')
def main():
person = Person()
person.get_name
if __name__ == '__main__':
main()
运行结果:
我叫xxx
2、@property的set,deleter,get
class Goods(object):
@property
def price(self):
print('@property')
@price.setter
def price(self,value):
print('@price.setter:'+str(value))
@price.deleter
def price(self):
print('@price.deleter')
obj = Goods()
obj.price = 50
obj.price
del obj.price
运行结果:
@price.setter:50
@property
@price.deleter
3、@property demo
class Goods(object):
def __init__(self):
#原价
self.original_price = 100
#折扣
self.discount = 0.8
@property
def price(self):
#实际价格=原价*折扣
new_price = self.original_price*self.discount
return new_price
@price.setter
def price(self,value):
self.original_price = value
@price.deleter
def price(self):
del self.original_price
obj = Goods()
obj.price
obj.price = 200
del obj.price
4、property函数使用
class Foo(object):
def get_name(self):
print('get_name')
return 'laowang'
def set_name(self, value):
'''必须两个参数'''
print('set_name')
return 'set value' + value
def del_name(self):
print('del_name')
return 'laowang'
NAME = property(get_name, set_name, del_name, 'description.')
obj = Foo()
obj.NAME #调用get方法
obj.NAME = 'alex' #调用set方法
desc = Foo.NAME.__doc__ #调用第四个描述
print(desc)
del obj.NAME #调用第三个删除方法
运行结果:
get_name
set_name
description.
del_name
5、property函数操作私有属性的get和set方法
class Person(object):
def __init__(self, age):
self.__age = age
def set_age(self, value):
self.__age = value
def get_age(self):
return self.__age
AGE = property(get_age, set_age)
person = Person(15)
person.AGE = 20
print(str(person.AGE))
运行结果:
20
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/weixin_42670402/article/details/83216845


猜你喜欢
- 在某些情况下,比如自动补全(auto complete)的输入框中,需要使用keyup事件来监听键盘的输入以迅速作出回应。关键在于keyup
- 前言:有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上。那么这个音乐高潮的提取能不能自动化呢?当然可以。先来
- python中安装包的方式有很多种:源码包:python setup.py install在线安装:pip install 包名(linux
- 【原文地址】Tip/Trick: Url Rewriting with ASP.NET 【原文发表日期】 Monday, February
- 如果我们希望把一个网站的更新实时发布到另一个网站上,最好的方法是通过 RSS 进行转载。如果只是需要简单的对更新的条目做个提示的话,使用 J
- 本文为大家分享了微信小程序实现留言板的具体实现方法,供大家参考,具体内容如下先说一下小程序的开发环境之类的基础东西1.到微信公众平台下载开发
- 前言之前一直认为UTF-8是万能的字符集问题解决方案,直到最近遇到这个问题。最近在做新浪微博的爬虫, 在存库的时候发现只要保持emoji表情
- 一、本文需求背景周六日出现CDN大量请求,现需要分析其请求频次与来源,查询是否存在被攻击问题。本文以阿里云CDN日志作为辅助查询数据,其它云
- 今天在 经纬 同学blog看到的。有这么一段代码:<ul id="demo"><li>
- 一个用HTML和CSS实现的注册页面模板,废话不多说了,上代码!更新:使用JavaScript实现用户名和密码表单校验功能。代码如下:<
- 一、Python包python包在开发中十分常见,一般通过导入包含特定功能的python模块包进行使用。当然,也可以自己创建打包模块,然后发
- 本文实例讲述了JavaScript实现控制打开文件另存为对话框的方法。分享给大家供大家参考。具体如下:这里通过JS打开图片另存为对话框,提示
- vue3使用computed获取vuex里数据不再是vue2.0里什么mapGetter,mapState那些复杂的获取方式,vue3.0里
- 什么是异步?含义 :双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,
- 前言弹幕可以给观众一种“实时互动”的错觉,虽然不同弹幕的发送时间有所区别,但是其只会在视频 * 定的一
- 这篇文章主要介绍了js简单的分页器插件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- 前言把以前一直只限于知道,却不清晰理解的这几个概念完完整整地梳理了一番。内容参考自wiki页面,然后加上自己一些理解。词法作用域和动态作用域
- 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多系列文章。今天一个很简单的功能,触发了一个
- 本文实例总结了Python常用的小技巧。分享给大家供大家参考。具体分析如下:1. 获取本地mac地址:import uuidmac = uu
- 最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, sc