![](/img/trans.png)
[英]Setting a get/set property in a python memoization decorator class
[英]Python get and set methods versus @property decorator
我正在探索Python中的装饰器,作为一个从其他语言来到Python的人,我对@property
及其@xxx.setter
兄弟的目的有点困惑。 在 Java 和 C++ 中get_xxx()
和set_xxx()
通常是组织封装的方式。 在 Python 中,我们有这两个装饰器,它们需要特定的语法和名称匹配才能工作。 @property
如何比get-set
方法更好?
我已经检查了这篇文章,但除了+=
运算符的可用性之外, @property
的优点是什么?
将property
用于属性的最佳部分是您不需要它。
Python 中的理念是类属性和方法都是公共的,但按照惯例 - 当您在它们的名称前加上一个“_”
“属性”的机制,即描述符协议,允许人们将以前的愚蠢的普通属性更改为检测属性,如果系统发展到需要它的情况,则使用 getter 和 setter 的代码进行保护。
但默认情况下,class 中的name
属性只是一个普通属性。 你做person.name = "Name"
- 不需要警卫,不需要也不推荐设置方法。 当它需要保护时(例如,将名称大写或过滤不正确的单词),无论使用该属性的代码都不需要更改:使用属性,属性分配仍然通过“=”进行操作员。
除此之外,如果对您来说使用“=”看起来并不比person.set_name("Name")
漂亮,我认为它对大多数人来说都是如此。 当然,这是主观的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.