在python中何时以及如何使用内置函数property()

2024-05-28 19:44:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在我看来,除了一点语法上的甜点,property()并没有什么用处

当然,能够编写a.b=2而不是a.setB(2)是很好的,但是隐藏a.b=2不是简单赋值的事实看起来像是一个麻烦的配方,或者是因为可能会发生一些意外的结果,例如a.b=2实际上会导致a.b成为1。或者引发异常。或者是性能问题。或者只是困惑

你能给我一个具体的例子来说明它的用途吗?(使用它修补有问题的代码不算数;-)


Tags: 代码语法配方property性能用途例子事实
2条回答

but hiding the fact that a.b=2 isn't a simple assignment looks like a recipe for trouble

但你并没有隐瞒这个事实;这一事实从一开始就不存在。这就是python——一种高级语言;不是组装。其中很少有“简单”语句可以归结为单CPU指令。把简单性理解到作业中,就是去读那些不存在的东西

当你说x.b=c时,你可能只会想“不管刚刚发生了什么,x.b现在应该是c”

这样做的目的是,在您真正需要getter和setter之前,避免编写getter和setter

所以,首先你要写:

class MyClass(object):
    def __init__(self):
        self.myval = 4

显然,您现在可以编写myobj.myval = 5

但后来,你决定你确实需要一个二传手,因为你想同时做一些聪明的事情。但是你不想改变所有使用你的类的代码,所以你把setter包装在@property装饰器中,它就可以正常工作了

相关问题 更多 >

    热门问题