属性应该返回写入它的值吗?

时间:2017-10-09 10:07:08

标签: python properties

对于对象属性,我们可以假设它引用了已成功分配给它的值。

HasErrors

数据属性基本上是计算属性,它们就像常规属性一样使用。是否可以实现违反上述假设的属性?

我有一个意见 - 没有财产,但Scenario Outline Login as "<User>" and purchase items and checkout by selecting "<Option>". Examples: |User| |Arun| |Ajay| |Ashok| Examples |Option| |one| |two| |Three| myobj.attr = w r = myobj.attr assert r == w - 但意见不计算在内。这个问题是否有规则或受尊敬的来源推荐?

2 个答案:

答案 0 :(得分:1)

属性可以做任何他们喜欢的事情。什么属性可以和应该做什么没有规则或建议。

如果对于myobj.attr的特定用例生成与指定值不同的值,那么就这样做。

答案 1 :(得分:1)

从纯粹的语义POV来看,getter / setter对只是不支持计算属性的语言的计算属性的等价物,所以我不期望getter / setter对(在myobj.get_attr() / {{中) 1}} form)与属性的行为不同。

如果拥有违反此断言的属性会损害您的敏感度,那么您可能希望使用“不完全是设定者”来更“明确地”转换该值,即myobj.set_attr(w)(并最终保持属性读取-只要)。

但实际上这里没有硬性规则,即使作为“最佳实践”,它仍然存在争议(主要是以观点为基础)。如果你这样做,绑定属性(带有setter的属性)的一个常见用例是验证值并在验证失败时引发一些异常,这不是你对普通属性的期望。