例如,在下面的代码,有什么功能的getName的好处?
class Node(object):
def __init__(self, name):
self.name = str(name)
def getName(self):
return self.name
def __str__(self):
return self.name
例如,在下面的代码,有什么功能的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没有做任何事情,而是直接获取和设置的基本变量。 属性让你透明的逻辑交换,如果在以后的时间,你需要做一些更复杂的不仅仅是获取/设置值。
有可能使用的getter / setter方法的好处,但在Python有没有真正的理由,而不是使用刚开/直接设置属性琐碎的getter / setter方法。 如果你要保持与需要一组特定的方法可用现有的API兼容性我能想到的唯一理由是。
不要使用一个getter,只是直接访问类属性。 通常吸气剂是用来访问私有/受保护的属性,但在Python有没有这样的事情。 使用一个getter的另一个原因是,这样就可以返回一个值,你的情况你不是之前做了一些工作,但到那个时候刚开始使用可能会在未来的权利,没有后顾之忧,改变property
装饰
@property
def name(self):
return self._name
您仍可以访问它像这样, myObject.name
,一样直接访问它。
我希望生产代码使用@property
。 但既然你问,我会扔东西在那里。
也许程序员将作出的子Node
,并认为这更容易(或至少更清楚了)覆盖getName
做一些特殊的工作。 只是一个想法!
但在一般情况下,像其他人所说,这不是你会经常看到的东西。
没有任何。 他们在Python不必要的,对广泛推荐。