Python类中的私有辅助函数

时间:2014-07-10 08:36:23

标签: python oop

我正在创建一个包含dict的类,并且有一些方法可以根据dict中的数据提取信息。每个键都指向一个字符串列表。列表中的每个字符串都是name(data).

形式

我是Python编程的新手,以前主要使用Java。我创建了一些私有帮助函数,用于我的公共方法。这是一个例子来说明我想要做的事情:

def _getItemName(item):
    str = ""
    for c in item:
        if c!= '(':
            str += c
        else:
            break
    return str

然后在几个公共方法中使用此方法,例如:

def getCertainItemsByName(self, key, name):
    foundItems = []
    for item in self.itemMap[key]:
        if _getItemName(item) == name:
            foundItems.append(item)
    return foundItems

这给了我一个等同于“全局名称”的错误_getItemName“没有定义。我意识到我可以在类之外声明方法,但是这个方法是特定于类的,所以这不是我想做的事情。最好的做法是什么?

1 个答案:

答案 0 :(得分:6)

在您的问题中,您遗漏了self;

def _getItemName(self, item):
    str = ""
    for c in item:
        if c!= '(':
            str += c
        else:
            break
    return str

def getCertainItemsByName(self, key, name):
    foundItems = []
    for item in self.itemMap[key]:
        if self._getItemName(item) == name:
            foundItems.append(item)

您应该在Python中查看static methodclass methodinstance method

  

静态方法是方法的特例。有时,你会写   属于某个类的代码,但不使用该对象本身   一点都不例如:

class Pizza(object):
     @staticmethod
     def mix_ingredients(x, y):
         return x + y

     def cook(self):
         return self.mix_ingredients(self.cheese, self.vegetables)

有关详情,请访问here