回溯:在greet中出现NameError

0 投票
2 回答
3027 浏览
提问于 2025-04-30 10:59

有没有人能帮我解决这个问题?
我收到了这个信息:

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

namePerson 类的一个实例属性。这意味着你在访问它的值时,需要在前面加上 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'

撰写回答