当前位置: 首页 > news >正文

装饰器@property的介绍与使用

          在写python代码的时候,有时候我们会碰到装饰器@property,那这个装饰器起到什么作用呢?我们直接举实际例子来说:

         定义一个Test的类,分别定义一个带有装饰器@property的方法,一个不含装饰器@property的方法。

          通过方法调用我们可以发现:

<1>带有装饰器@property的方法:当调用该方法时,后面不需要加圆括号【()】。

<2>不带装饰器@property的方法:当调用该方法时,后面必须加圆括号【()】。

class Test(object):
    
    #含有装饰器
    @property
    def use_property(self):
        print('带有装饰器')
    #不含装饰器
    def no_property(self): ##不含@property
        print('不含装饰器')

model = Test()
# 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()。
model.use_property
#没有加@property , 必须使用正常的调用方法的形式,即在后面加()
model.no_property()

问题:为什么要添加@property装饰器?

      主要目的:让此方法变为私有属性,防止对其修改。

      类比理解:一个.txt文件为只读属性,那么只能看该文件,不能修改该文件。

class Test(object):
    def __init__(self):
        #定义属性
        self._name = '李华'
        self._age = 18 
    #方法加入@property后,这个方法相当于一个属性,
    #这个属性可以让用户进行使用,而且用户有没办法随意修改。
    @property
    def name(self): 
        return self._name 
    @property
    def age(self):
        return self._age
model = Test()
#用户进行属性调用的时候,直接调用name即可,而不用知道属性名_name
#因此用户无法更改属性,从而保护了类的属性。
print(model.name)
print(model.age)

相关文章:

  • 我们还只做了一半
  • pandas的groupby函数
  • 手机丢了
  • scrapy框架——下载器中间件(Downloader Middlewares)
  • 如何使用scrapy下载图片
  • 关于windows上的lsass.exe进程
  • 如何匹配Python库的版本?
  • 如何将 Windows 2000 安装移到不同的硬件
  • 如何安装Redis?
  • 华中之旅--逃离广州(二)
  • 人人网如何注册与设置密码
  • 华中之旅-- 瑞雪岳阳城
  • 谈一下分布式爬虫
  • redis-desktop-manager安装
  • 时间管理的40项准则
  • android 一些 utils
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Lsb图片隐写
  • Netty 4.1 源代码学习:线程模型
  • Redash本地开发环境搭建
  • Unix命令
  • 翻译:Hystrix - How To Use
  • 官方解决所有 npm 全局安装权限问题
  • 回顾2016
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 项目实战-Api的解决方案
  • (06)Hive——正则表达式
  • (1)虚拟机的安装与使用,linux系统安装
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (分布式缓存)Redis持久化
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (七)理解angular中的module和injector,即依赖注入
  • (学习日记)2024.01.19
  • (已解决)什么是vue导航守卫
  • (转载)OpenStack Hacker养成指南
  • .gitignore文件---让git自动忽略指定文件
  • .NET CLR Hosting 简介
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/C# 使窗口永不获得焦点
  • .net6 webapi log4net完整配置使用流程
  • .NET成年了,然后呢?
  • .net流程开发平台的一些难点(1)
  • .NET中统一的存储过程调用方法(收藏)
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @ConditionalOnProperty注解使用说明
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [20160807][系统设计的三次迭代]
  • [20181219]script使用小技巧.txt
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [CSS]文字旁边的竖线以及布局知识
  • [ES-5.6.12] x-pack ssl
  • [ffmpeg] aac 音频编码