Python:调用方法的问题

Python:调用方法的问题,python,Python,我是Python新手,我编写了一个用于管理简单电话簿的类。我已经删除了与此帖子无关的方法 class Phonebook: def __init__(self): self.book = {} def newEntry(self, name, number): self.book[name] = number def findNumber(self, name): return self.book[name]

我是Python新手,我编写了一个用于管理简单电话簿的类。我已经删除了与此帖子无关的方法

class Phonebook:

    def __init__(self):
        self.book = {}

    def newEntry(self, name, number):
        self.book[name] = number

    def findNumber(self, name):
        return self.book[name]

    def nameList(self):
        list = self.book.keys()
        list.sort()
        for k in list:
            print k, self.book[k]
我的问题涉及最后一种方法,nameList,它按字母顺序打印电话簿条目name和phone no。最初,我尝试了以下方法:

 def nameList(self):
        list = self.book.keys()
        list.sort()
        for k in list:
            print k, findNumber(k)
但是,这引发了一个NameError全局名称“findNumber”未定义错误。有人能解释为什么这不起作用吗

提前感谢。

这不起作用,因为findNumber不是一个全局定义的函数。它是对象上的一个方法,因此要调用它,需要调用self.findNumberk

因此,您的示例如下所示:

 def nameList(self):
        list = self.book.keys()
        list.sort()
        for k in list:
            print k, self.findNumber(k)
这不起作用,因为findNumber不是全局定义的函数。它是对象上的一个方法,因此要调用它,需要调用self.findNumberk

因此,您的示例如下所示:

 def nameList(self):
        list = self.book.keys()
        list.sort()
        for k in list:
            print k, self.findNumber(k)
在类内时,FindNumber应作为self.FindNumber访问

或者作为电话簿。findNumberself,k

因为在类下声明的变量或函数成为类的属性。

findNumberk在类内时应作为self.findNumberk访问

或者作为电话簿。findNumberself,k

因为在类下声明的变量或函数成为类的属性。

您需要将self添加到findNumber中

因此,它将成为:

def nameList(self):
        list = self.book.keys()
        list.sort()
        for k in list:
            print k, self.findNumber(k)
否则它不知道findNumber来自哪里,因为它只在类或self中定义。

您需要将self添加到findNumber中

因此,它将成为:

def nameList(self):
        list = self.book.keys()
        list.sort()
        for k in list:
            print k, self.findNumber(k)

否则它不知道findNumber来自何处,因为它只在类或self中定义。

请不要命名变量列表,它已经是内置列表类型的名称。请不要命名变量列表,它已经是内置列表类型的名称。没问题!如果这确实解决了你的问题,你能吗?谢谢完成几分钟前我不会接受你的回答。没问题!如果这确实解决了你的问题,你能吗?谢谢完成在几分钟过去之前,我是不会接受你的回答的。