2024-04-29 09:30:31 发布
网友
它被认为是一个“horrible scenario”来更新我们的类,使“OurAtt”的值介于0和1000之间:
class OurClass: def __init__(self, a): self.OurAtt = a x = OurClass(10) print(x.OurAtt)
现在,我的问题是为什么我们要依赖@属性?是因为代码的易读性还是其他原因;因为我们可以很好地在\uuInit_Uu()方法下进行检查?在
在__init__方法中执行检查这一事实并不能保证以后不能将该值更改为无效值。在
__init__
例如:
x = OurClass(10) x.OurAtt = -20
因此,我们希望在每次设置ourAtt值时运行测试。我们可以使用:
ourAtt
此外,它还允许使代码更具可读性:每个setter都检查一个特定值是否有效。这通常是一种比在同一方法中检查所有值更好的方法,因为如果我们改变一个值的规范,我们只需修改相应的setter。在
另一个优点是验证是在透明的情况下完成的:您不必将属性更改为“setter方法”:对于用户来说,它看起来就像是他/她更改了一个属性。因此,您可以在稍后的过程中(当用户已经使用了该属性时)决定在不更改接口的情况下添加一些验证。在
最后,它更具声明性,因此通常更为“Pythonic”。在
在
__init__
方法中执行检查这一事实并不能保证以后不能将该值更改为无效值。在例如:
因此,我们希望在每次设置
^{pr2}$ourAtt
值时运行测试。我们可以使用:此外,它还允许使代码更具可读性:每个setter都检查一个特定值是否有效。这通常是一种比在同一方法中检查所有值更好的方法,因为如果我们改变一个值的规范,我们只需修改相应的setter。在
另一个优点是验证是在透明的情况下完成的:您不必将属性更改为“setter方法”:对于用户来说,它看起来就像是他/她更改了一个属性。因此,您可以在稍后的过程中(当用户已经使用了该属性时)决定在不更改接口的情况下添加一些验证。在
最后,它更具声明性,因此通常更为“Pythonic”。在
相关问题 更多 >
编程相关推荐