将变量分配给私有方法

时间:2014-02-04 14:50:51

标签: python google-app-engine

我一直致力于使用Google App Engine的python sdk的项目。我正在挖掘它并看到很多这样的方法。

def _put(self, bla, bla):
    do something
put = _put

他们有没有理由像这样分配私有变量?我的意思是我没有看到将方法定义为私有然后将其分配给非私有变量的意义。为什么不让这个方法自行公开?

def put(self, bla, bla):
    do something

我唯一能想到的就是这样做是为了满足一些“正确的编码风格”规则。我主要感兴趣的是因为我想更好地编写适当的python代码,并想知道这是否是我应该自己做的事情?

编辑: 谢谢@falsetru的链接! 这就是我所说的 (https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/ndb/model.py?r=410#3340

2 个答案:

答案 0 :(得分:3)

对于NDB代码中的此模式,

Guido's explanation

  

NDB对公共名称和受保护名称有不同的规则。以下划线开头的许多(但不是全部)名称实际上被认为是公共API,因为我们不希望将它们的方法名称保留为属性名称。为方便起见,我们只是将用户友好的无下划线名称别名(例如真正的方法是_put(),你应该真的使用它,但只要你没有名为的属性我们就让你使用put() '把')。

答案 1 :(得分:2)

只有一个(一点点)合理的目的是关闭

def wrapper():
    x = 2
    def _put(self, bla, bla):
       return x + 2

    self.put = _put