我正在创建一个包含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“没有定义。我意识到我可以在类之外声明方法,但是这个方法是特定于类的,所以这不是我想做的事情。最好的做法是什么?
答案 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 method
,class method
和instance 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