Python类中的私有辅助函数出现"global name <方法名> is not defined"错误
我正在创建一个类,这个类里面有一个字典(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 个回答
19
在你的问题中,你缺少了 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 中的 静态方法
、类方法
和 实例方法
。
静态方法是一种特殊的函数。有时候,你会写一些属于某个类的代码,但这些代码根本不使用这个类的对象。比如:
class Pizza(object):
@staticmethod
def mix_ingredients(x, y):
return x + y
def cook(self):
return self.mix_ingredients(self.cheese, self.vegetables)
想了解更多,可以访问 这里