【发布时间】:2022-01-18 02:25:45
【问题描述】:
我正在探索 Python 中的装饰器,作为一个从其他语言来到 Python 的人,我对 @property 及其 @xxx.setter 兄弟的目的有点困惑。在 Java 和 C++ 中,get_xxx() 和 set_xxx() 通常是组织封装的方式。在 Python 中,我们有这两个装饰器,它们需要特定的语法和名称匹配才能工作。 @property 比 get-set 方法好多少?
我检查了this post,但除了+= 运算符的可用性之外,@property 的优势是什么?
【问题讨论】:
-
重点是您不应该在 Python 中编写 getter 和 setter。这是理解的关键。只需使用普通的
self.x = whatever。 -
使用
property的优势是您不必编写样板的getter 和setter。您只需使用普通属性,如果和何时您需要控制对属性的访问,只有在您才添加属性,并且不会破坏客户端的界面到您的班级或您自己的实现。所以你得到没有样板的getter和setter的封装 -
“需要特定的语法和名称匹配才能工作。”它们实际上并没有,不过,如果你使用
@语法,它会,但这不是必需的。 -
@juanpa.arrivillaga 谢谢,您的答案的链接为我提供了我需要的所有信息。
标签: python properties python-decorators getter-setter