将'get function'用于 python 类有什么好处?



例如,在下面的代码中,getName 函数有什么好处?

class Node(object):
    def __init__(self, name):
        self.name = str(name)
    def getName(self):
        return self.name
    def __str__(self):
        return self.name

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

使用

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

不要使用 getter,只需直接访问 class 属性即可。通常 getter 用于访问私有/受保护的属性,但在 Python 中没有这样的东西。使用 getter 的另一个原因是,您可以在返回值之前做一些工作。就你而言,你不是,但将来可能会改变,对,不用担心。当那个时候到来时,只需开始使用property装饰器即可。

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

您仍将像这样访问它,myObject.name ,与直接访问它相同。

我希望生产代码使用@property. 不过既然你问了,我就扔点东西。

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

但总的来说,就像其他人说的那样,这不是你通常会看到的。

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

最新更新