为python类使用'get function'有什么好处?

时间:2012-12-13 03:05:31

标签: 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

4 个答案:

答案 0 :(得分:17)

没有任何好处。从其他语言(例如Java)进入Python的人有时会这样做,因为他们已经习惯了。在Python中,没有必要创建这些类型的getter和setter,除了直接获取和设置底层变量之外什么都不做。 Properties允许您透明地交换逻辑,如果以后需要做一些比获取/设置值更复杂的事情。

使用getter / setter有一个好处,但在Python中没有真正的理由使用简单的getter / setter而不是直接获取/设置属性。我能想到的唯一原因是,如果你必须保持与现有API的兼容性,这需要一组特定的方法可用。

答案 1 :(得分:3)

不要使用getter,只需直接访问class属性即可。通常,getter用于访问私有/受保护的属性,但在python中没有这样的东西。使用getter的另一个原因是你可以在返回一个值之前做一些工作,在你的情况下你可以做,但是这可能在未来发生变化,不用担心,当时间刚刚开始使用property时装饰

@property
def name(self):
    return self._name

您仍然可以像myObject.name一样访问它,就像直接访问它一样。

答案 2 :(得分:2)

我希望生产代码能够使用@property。但既然你问过,我会把东西扔出去。

也许程序员会创建Node的子类,并认为更轻松(或至少更明确)覆盖getName来做一些特别的工作。只是一个想法!

但总的来说,就像其他人所说的那样,这不是你常见的事情。

答案 3 :(得分:0)

没有。它们在Python中是不必要的,并且广泛推荐使用。