文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python中@property怎么使用

2023-07-02 11:55

关注

本篇内容介绍了“python中@property怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.什么是property

简单地说就是一个类里面的方法一旦被@property装饰,就可以像调用属性一样地去调用这个方法,它能够简化调用者获取数据的流程,而且不用担心将属性暴露出来,有人对其进行赋值操作(避免使用者的不合理操作)。需要注意的两点是

>>> class Goods():        def __init__(self,unit_price,weight):            self.unit_price = unit_price            self.weight = weight        @property        def price(self):            return self.unit_price * self.weight>>> lemons = Goods(7,4)>>>>>> lemons.price28

上面通过调用属性的方式直接调用到 price 方法,property把复杂的处理过程封装到了方法里面去,取值的时候调用相应的方法名即可。

2.property属性定义的两种方式

A、装饰器方式

在类的方法上应用@property装饰器,即上面那种方式。

B、类属性方式

创建一个实例对象赋值给类属性

>>> class Lemons():        def __init__(self,unit_price=7):            self.unit_price = unit_price        def get_unit_price(self):            return self.unit_price        def set_unit_price(self,new_unit_price):            self.unit_price = new_unit_price        def del_unit_price(self):            del self.unit_price        x = property(get_unit_price, set_unit_price, del_unit_price)>>> fruit = Lemons()>>> >>> fruit.x                         #调用 fruit.x 触发 get_unit_price7>>> >>> fruit.x = 9                     #调用 fruit.x = 9 触发 set_unit_price>>> >>> fruit.x9>>> >>> fruit.unit_price                #调用 fruit.unit_price 触发 get_unit_price9>>> del fruit.x                     #调用 del fruit.x 触发 del_unit_price >>> >>> fruit.unit_priceTraceback (most recent call last):  File "<pyshell#23>", line 1, in <module>    l.unit_priceAttributeError: 'Lemons' object has no attribute 'unit_price'

property方法可以接收四个参数

3.用property代替getter和setter方法

>>>class Watermelon():       def __init__(self,price):           self._price = price                  #私有属性,外部无法修改和访问        def get_price(self):           return self._price        def set_price(self,new_price):           if new_price > 0:               self._price = new_price           else:               raise 'error:价格必须大于零'

用property代替getter和setter

>>>class Watermelon():       def __init__(self,price):           self._price = price       @property                          #使用@property装饰price方法       def price(self):           return self._price       @price.setter                      #使用@property装饰方法,当对price赋值时,调用装饰方法       def price(self,new_price):           if new_price > 0:               self._price = new_price           else:               raise 'error:价格必须大于零'>>> watermelon = Watermelon(4)>>> >>> watermelon.price4>>> >>> watermelon.price = 7>>> >>> watermelon.price7

“python中@property怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯