什么是好处使用“获得功能”为Python类? [关闭](What is the benefit

2019-07-05 02:45发布

例如,在下面的代码,有什么功能的getName的好处?

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

Answer 1:

没有任何好处。 人们从其他语言(例如,Java)来的Python有时这样做是因为他们已经习惯了。 在Python没有一点创建这些类型的getter和setter没有做任何事情,而是直接获取和设置的基本变量。 属性让你透明的逻辑交换,如果在以后的时间,你需要做一些更复杂的不仅仅是获取/设置值。

有可能使用的getter / setter方法的好处,但在Python有没有真正的理由,而不是使用刚开/直接设置属性琐碎的getter / setter方法。 如果你要保持与需要一组特定的方法可用现有的API兼容性我能想到的唯一理由是。



Answer 2:

不要使用一个getter,只是直接访问类属性。 通常吸气剂是用来访问私有/受保护的属性,但在Python有没有这样的事情。 使用一个getter的另一个原因是,这样就可以返回一个值,你的情况你不是之前做了一些工作,但到那个时候刚开始使用可能会在未来的权利,没有后顾之忧,改变property装饰

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

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



Answer 3:

我希望生产代码使用@property 。 但既然你问,我会扔东西在那里。

也许程序员将作出的子Node ,并认为这更容易(或至少更清楚了)覆盖getName做一些特殊的工作。 只是一个想法!

但在一般情况下,像其他人所说,这不是你会经常看到的东西。



Answer 4:

没有任何。 他们在Python不必要的,对广泛推荐。



文章来源: What is the benefit to using a 'get function' for a python class? [closed]