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

作者:以梦为马越骑越傻 时间:2021-11-13 03:32:20 

本文实例讲述了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

标签:python,@property,property函数
0
投稿

猜你喜欢

  • 对django layer弹窗组件的使用详解

    2021-09-08 00:09:38
  • Python Tornado批量上传图片并显示功能

    2023-08-07 22:33:21
  • MySQL关于sql_mode解析与设置讲解

    2024-01-25 00:40:59
  • OpenAI的Whisper模型进行语音识别使用详解

    2022-02-24 23:50:51
  • Golang中Interface接口的三个特性

    2024-04-23 09:35:46
  • SqlServer 索引自动优化工具

    2012-10-07 10:41:09
  • 常见系统中文字体的英文名

    2008-03-03 12:44:00
  • Python切片操作去除字符串首尾的空格

    2023-08-08 19:19:21
  • Python数字图像处理代数之加减乘运算

    2023-03-20 07:51:26
  • 一些文件未注册导致mssql表文件无法找开的解决方法

    2024-01-26 18:42:22
  • 教你快速掌握SQL语言中游标的使用技巧

    2009-01-08 16:24:00
  • SqlServer 多种分页方式 详解(含简单速度测试)

    2024-01-15 07:28:04
  • 详解Vue的ref特性的使用

    2024-06-07 15:23:02
  • MySQL如何修改账号的IP限制条件详解

    2024-01-14 19:41:59
  • Python 3.6 -win64环境安装PIL模块的教程

    2021-10-30 11:02:31
  • Python如何生成xml文件

    2022-07-25 06:00:33
  • Python3如何判断三角形的类型

    2022-01-06 22:12:51
  • javascript+HTML5 canvas绘制时钟功能示例

    2024-05-05 09:14:01
  • 交互设计:简单

    2011-08-27 16:46:27
  • Python+Selenium实现网站滑块拖动操作

    2023-03-15 16:31:51
  • asp之家 网络编程 m.aspxhome.com