【发布时间】:2018-08-15 00:01:10
【问题描述】:
我是一个新的 Python 程序员,我最近开始学习 Python 中的 @property 和 @setter 装饰器。但是我对它们在最简单的脚本中的使用感到困惑,例如:
class Aaron:
def __init__(self,name):
self.name = name
@property
def name(self):
return self._name
@name.setter
def name(self,new):
self._name = new
setter 和 getter 有什么用?,感谢任何帮助 谢谢
【问题讨论】:
-
property装饰器和描述符通常是 Python 进行数据隐藏/封装的方式。不必编写一堆 biolerplate getter 和 setter,您可以从简单的属性访问开始,然后使用带有property的托管属性进行折射,而不会破坏您以前的代码。所以,在这种情况下,你不会使用它们 -
您好,很抱歉打扰您,但您能否以更简单的方式解释 setter 和 getter,我无法理解您所写的内容,谢谢
-
假设您的 name 属性,如果名称中包含数字,您想引发异常。
property将允许您在将其分配给内部变量之前进行字符串/类型检查。 -
@AaronB 你将不得不提供更多关于你不明白的背景。听起来你最好阅读一篇介绍性的 OOP 教程,最好是一个面向 Pytho 的教程,这样你才能真正了解
property,Python 中的 OOP 教程通常会使用类似 java 的get_attrndset_attr方法不是pythonic -
@AaronB 基本上你想让你的类的用户有可能改变一个属性的值,但是当你这样做时,你 1)想要在做之前验证这个更改,或者 2)触发更改此属性所需的事件。因此,您需要使用 getter/setter 以便对其进行管理。
标签: python properties setter getter