Python: 无法在单独的函数中调用函数? (未定义名称 'getItemClassiness')
Python: Unable to call function within a seperate function? (undefined name 'getItemClassiness')
由于某种原因,getClassiness 函数不起作用,因为它无法调用辅助函数 getItemClassiness。这可能是什么原因?谢谢!
class Classy(object):
def __init__(self):
self.items = []
def addItem(self, item):
self.items.append(item)
def getItemClassiness(item):
if item == "tophat":
return 2
if item == "bowtie":
return 4
if item == "monocle":
return 5
return 0
def getClassiness(self):
total = 0
for item in self.items:
x = getItemClassiness(item)
total += x
return total
# Test cases
me = Classy()
# Should be 0
print(me.getClassiness())
# Should be 2
me.addItem("tophat")
print(me.getClassiness())
me.addItem("bowtie")
me.addItem("jacket")
me.addItem("monocle")
print(me.getClassiness())
# Should be 11
me.addItem("bowtie\n")
print(me.getClassiness())
# Should be 15
您可以使用此 class 来表示 classy 某人或某物的状态。 “优雅”可与“花哨”互换。如果你添加看起来很花哨的项目,你会增加你的“classiness”。在“Classy”中创建一个函数,将字符串作为输入并将其添加到“items”列表中。另一种方法应该根据项目计算“classiness”值。以下项目具有与之相关的 classiness 点数:“tophat”= 2 “bowtie”= 4 “monocle”= 5 其他所有东西都有 0 点。使用下面的测试用例来指导您!
在第 21 行调用 class 方法时没有使用 self 关键字。
x = self.getItemClassiness(item)
类似地,第 8 行中的 self 关键字需要作为 getItemClassiness
函数定义的参数
def getItemClassiness(self, item):
您应该将 getItemClassiness
声明为静态方法,因为它不需要特定的实例。然后您可以像调用实例方法一样调用该函数。
@staticmethod
def getItemClassiness(item):
...
def getClassiness(self):
...
for item in self.items:
x = self.getItemClassiness(item)
但是最后一个测试用例仍然不会给你 15,因为 "bowtie" != "bowtie\n"
。如果您打算忽略字符串开头或结尾的白色 space,请使用 str.strip()
.
由于某种原因,getClassiness 函数不起作用,因为它无法调用辅助函数 getItemClassiness。这可能是什么原因?谢谢!
class Classy(object):
def __init__(self):
self.items = []
def addItem(self, item):
self.items.append(item)
def getItemClassiness(item):
if item == "tophat":
return 2
if item == "bowtie":
return 4
if item == "monocle":
return 5
return 0
def getClassiness(self):
total = 0
for item in self.items:
x = getItemClassiness(item)
total += x
return total
# Test cases
me = Classy()
# Should be 0
print(me.getClassiness())
# Should be 2
me.addItem("tophat")
print(me.getClassiness())
me.addItem("bowtie")
me.addItem("jacket")
me.addItem("monocle")
print(me.getClassiness())
# Should be 11
me.addItem("bowtie\n")
print(me.getClassiness())
# Should be 15
您可以使用此 class 来表示 classy 某人或某物的状态。 “优雅”可与“花哨”互换。如果你添加看起来很花哨的项目,你会增加你的“classiness”。在“Classy”中创建一个函数,将字符串作为输入并将其添加到“items”列表中。另一种方法应该根据项目计算“classiness”值。以下项目具有与之相关的 classiness 点数:“tophat”= 2 “bowtie”= 4 “monocle”= 5 其他所有东西都有 0 点。使用下面的测试用例来指导您!
在第 21 行调用 class 方法时没有使用 self 关键字。
x = self.getItemClassiness(item)
类似地,第 8 行中的 self 关键字需要作为 getItemClassiness
def getItemClassiness(self, item):
您应该将 getItemClassiness
声明为静态方法,因为它不需要特定的实例。然后您可以像调用实例方法一样调用该函数。
@staticmethod
def getItemClassiness(item):
...
def getClassiness(self):
...
for item in self.items:
x = self.getItemClassiness(item)
但是最后一个测试用例仍然不会给你 15,因为 "bowtie" != "bowtie\n"
。如果您打算忽略字符串开头或结尾的白色 space,请使用 str.strip()
.