python中的@property作用

本文深入探讨了Python中property装饰器的使用原因及其优势。通过对比两种获取属性值的方法,阐述了property如何使代码更加清晰且避免传参问题。同时,文章也提醒了使用property时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、为什么要使用property这个单词

我们首先来分析一下为什么但是龟哥会用property这个单词,而不用foobar这样的单词呢,想必一定有他的想法。
通过谷歌翻译查到,property的意思是属性。

property ——> 属性

虽然我们不能猜测出(当然我不提倡乱猜)它的具体意思,但是我们可能应该想到,被他修饰的应该和属性的意思有些许联系的

2、具体分析

我们知道人的身高和臂长大致呈1:1的关系,现在我们想通过一个人的身高求得一个人臂长,可以像下面的方法或得
方法一

class Person(object):
    def __init__(self):
        self.height = 175
        
    def arm_length(self):
        return self.height
    
person = Person()
person.arm_length()

其实臂长也可以算是我们属性一部分,**person.arm_length()**这样的获取臂长的方式会不会觉得很别扭呢(通过方法获得一个属性值),下面我们来尝试使用property来获得
方法二

class Person(object):
    def __init__(self):
        self.height = 175
        
    @property  
    def arm_length(self):
        return self.height
    
person = Person()
person.arm_length

具体分析
我们是不是感觉方法二会更专业一些呢。其实,还有一个原因就是,方法一中通过方法的形式获取属性,我们就会想,是方法就想这个方法需不需要参数的问题。显然通过property很好的解决了这个问题,既然我们可以阅读代码时,一眼就能想到这是一个属性值(或者我们想要的值而已),还很好的避免的传参的问题。

到这里我们也大概明白了龟哥为什么用property这个单词了吧

3、使用property的注意点

  1. 被property修饰的方法只有一个参数,self
  2. 它必须要有返回值
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值