回溯:在greet中出现NameError
有没有人能帮我解决这个问题?
我收到了这个信息:
Traceback: in in greet NameError: global name 'name' is not defined
来自这个:
class Person:
def __init__(self, name):
self.name = name
def greet(self, other_name):
return "Hi {0}, my name is {1}".format(other_name, name)
2 个回答
0
name
是 Person
类的一个实例属性。这意味着你在访问它的值时,需要在前面加上 self.
:
return "Hi {0}, my name is {1}".format(other_name, self.name)
# ^^^^^
3
在greet函数里,name
这个变量不在可用范围内。你需要用self.name
来代替。比如:
class Person:
def __init__(self, name):
self.name = name
def greet(self, other_name):
self.other_name = other_name
return "Hi {0}, my name is {1}".format(other_name, self.name)
你可以验证一下这样做是有效的
>>> mitch = Person('mitch')
>>> mitch.greet('mitchell') # prints 'Hi mitchell, my name is mitch'
>>> mitch.name # prints 'mitch'
>>> mitch.other_name # prints 'mitchell'