属性与getter和setter

2024-04-29 09:30:31 发布

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

它被认为是一个“horrible scenario”来更新我们的类,使“OurAtt”的值介于0和1000之间:

class OurClass:
    def __init__(self, a):
        self.OurAtt = a

x = OurClass(10)
print(x.OurAtt)

现在,我的问题是为什么我们要依赖@属性?是因为代码的易读性还是其他原因;因为我们可以很好地在\uuInit_Uu()方法下进行检查?在

^{pr2}$

Tags: 方法代码self属性initdef原因class
1条回答
网友
1楼 · 发布于 2024-04-29 09:30:31

__init__方法中执行检查这一事实并不能保证以后不能将该值更改为无效值。在

例如:

x = OurClass(10)
x.OurAtt = -20

因此,我们希望在每次设置ourAtt值时运行测试。我们可以使用:

^{pr2}$

此外,它还允许使代码更具可读性:每个setter都检查一个特定值是否有效。这通常是一种比在同一方法中检查所有值更好的方法,因为如果我们改变一个值的规范,我们只需修改相应的setter。在

另一个优点是验证是在透明的情况下完成的:您不必将属性更改为“setter方法”:对于用户来说,它看起来就像是他/她更改了一个属性。因此,您可以在稍后的过程中(当用户已经使用了该属性时)决定在不更改接口的情况下添加一些验证。在

最后,它更具声明性,因此通常更为“Pythonic”。在

相关问题 更多 >