python中@property和property函数常见使用方法示例


Posted in Python onOctober 21, 2019

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
python实现异步回调机制代码分享
Jan 10 Python
python实现的文件夹清理程序分享
Nov 22 Python
Python3读取Excel数据存入MySQL的方法
May 04 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
python文件写入write()的操作
May 14 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
python 安装impala包步骤
Mar 28 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
Python极值整数的边界探讨分析
Sep 15 Python
基于Python实现射击小游戏的制作
Apr 06 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 #Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 #Python
python打印直角三角形与等腰三角形实例代码
Oct 20 #Python
python配置文件写入过程详解
Oct 19 #Python
python实现广度优先搜索过程解析
Oct 19 #Python
python字符串格式化方式解析
Oct 19 #Python
基于python3监控服务器状态进行邮件报警
Oct 19 #Python
You might like
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
php递归函数怎么用才有效
2018/02/24 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
python语言基本语句用法总结
2019/06/11 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
逃课上网检讨书
2014/02/20 职场文书
优秀毕业生求职信
2014/06/05 职场文书
公司表扬稿范文
2015/05/05 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
详解Laravel框架的依赖注入功能
2021/05/27 PHP
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js