@property初体验

2019年11月1日 / 2次阅读 / Last Modified 2019年11月1日
内置函数

在python自带的几个装饰器函数中,@property这个可能是最神秘的。这个装饰器背后还涉及到descriptor技术(描述器),本文首先介绍如何简单使用@property,更复杂的内容,以后慢慢学习和分享。

简单使用@property装饰器,它的作用,就是能够把一个类的成员函数,当成一个属性来访问,访问这个由函数装扮成的属性,表面上看是对属性的直接访问,实质上是在调用函数。

上一段很简单的示例代码:

class fruit():

    def __init__(self, num, price):
        self.num = num
        self.price = price

    @property
    def totalcost(self):
        return round(self.num*self.price,2)


ft = fruit(100, 12.34)
print(ft.totalcost)

fruit类中有一个函数叫totalcost,被@property装饰了一下。与你你会看到,代码在访问(调用)totalcost的时候,并没有带括号,就像是一个普通的属性一下直接访问,但是实际上是在做函数调用。

以上代码执行效果:

$ python3 property.py
1234.0

python解释器在访问对象属性的时候,要先判断属性本身属于什么类型,内部会做一些转换,因此加上@property装饰器后,用访问普通属性的方式调用函数成为了可能。这样其实也增加了代码的可读性,语义更好理解,整体更优雅。

-- EOF --

本文链接:https://www.pynote.net/archives/1424

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top