Chr*_*ris 7 python class getter-setter
例如,在下面的代码中,getName函数的好处是什么?
class Node(object):
def __init__(self, name):
self.name = str(name)
def getName(self):
return self.name
def __str__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
Bre*_*arn 18
没有任何好处.从其他语言(例如Java)进入Python的人有时会这样做,因为他们已经习惯了.在Python中,没有必要创建这些类型的getter和setter,除了直接获取和设置底层变量之外什么都不做. 如果以后需要执行比获取/设置值更复杂的操作,属性允许您透明地交换逻辑.
使用getter/setter有一个好处,但是在Python中没有真正的理由使用琐碎的getter/setter而不是直接获取/设置属性.我能想到的唯一原因是,如果您必须保持与需要某组方法可用的现有API的兼容性.
不使用 getter,直接访问类属性。通常 getter 用于访问私有/受保护的属性,但在 Python 中没有这样的东西。使用 getter 的另一个原因是您可以在返回值之前做一些工作。就你而言,你不是,但将来可能会改变,不用担心。到时候就开始使用property装饰器吧。
@property
def name(self):
return self._name
Run Code Online (Sandbox Code Playgroud)
您仍然可以像这样访问它,myObject.name与直接访问它相同。
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |