is not defined"-6ren"> is not defined"-我正在创建一个包含字典的类,并且有一些方法可以根据字典中的数据提取信息。每个键都指向一个字符串列表。列表中的每个字符串都是 name(data). 的形式 我是 Python 编程的新手,之前主要使用-6ren">
gpt4 book ai didi

python - Python 类中的私有(private)辅助函数给出 "global name is not defined"

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:12 28 4
gpt4 key购买 nike

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

的形式

我是 Python 编程的新手,之前主要使用 Java。我已经创建了几个私有(private)辅助函数,它们将在我的公共(public)方法中使用。这是一个示例来说明我正在尝试做的事情:

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

这个方法随后被用在几个公共(public)方法中,就像在这个例子中:

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

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

最佳答案

在你的问题中你缺少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 methods are a special case of methods. Sometimes, you'll write code that belongs to a class, but that doesn't use the object itself at all. For example:

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

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

更多可以访问here

关于python - Python 类中的私有(private)辅助函数给出 "global name <name of method> is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24671896/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com