对于对象属性,我们可以假设它引用了已成功分配给它的值。
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
- 但意见不计算在内。这个问题是否有规则或受尊敬的来源推荐?
答案 0 :(得分:1)
属性可以做任何他们喜欢的事情。什么属性可以和应该做什么没有规则或建议。
如果对于myobj.attr
的特定用例生成与指定值不同的值,那么就这样做。
答案 1 :(得分:1)
从纯粹的语义POV来看,getter / setter对只是不支持计算属性的语言的计算属性的等价物,所以我不期望getter / setter对(在myobj.get_attr()
/ {{中) 1}} form)与属性的行为不同。
如果拥有违反此断言的属性会损害您的敏感度,那么您可能希望使用“不完全是设定者”来更“明确地”转换该值,即myobj.set_attr(w)
(并最终保持属性读取-只要)。
但实际上这里没有硬性规则,即使作为“最佳实践”,它仍然存在争议(主要是以观点为基础)。如果你这样做,绑定属性(带有setter的属性)的一个常见用例是验证值并在验证失败时引发一些异常,这不是你对普通属性的期望。