【问题标题】:Python Classes Global NameError [closed]Python 类全局 NameError [关闭]
【发布时间】:2016-03-14 17:21:49
【问题描述】:

我正在学习课程,我编写了一个简单的程序来更好地理解它们。该程序基本上是一个打开文件的类。但是,我不断得到:

NameError:未定义全局名称“book”

我认为在__init__ 方法中初始化self.book = book 将使我能够将其传递给下一个方法。但这行不通。如何将self.book 传递给open_file 方法?

class AnalyzeBook(object):
    def __init__(self, filename, book):
        self.filename = filename
        self.book = book

    def open_file(self, filename, book):

        with open(self.filename) as f:
            self.book = f.readlines()

            return self.book


book_analysis = AnalyzeBook('lordoftherings.txt', book=None)
book_analysis.open_file('lordoftherings.txt', book=None)

编辑: 更新了我的代码,将 book 添加到 __init__book=None 并且有效。

【问题讨论】:

  • 那么self.book应该设置为。你只给了这个类一个文件名。
  • 另外,从编辑器复制并粘贴您的代码,不要重新输入。最后一行上的那些花哨的引号通常会导致语法错误,因此某些“智能”文本自动改进会在您键入时插入那些。
  • 你也可以在 init 中做 self.book = None
  • 这取决于。每个实例是否以 self.book 的不同值开头?如果没有,您可以硬编码该值:self.book = 'tree',而不是将其作为__init__ 函数的参数。

标签: python class nameerror


【解决方案1】:

将变量 book 添加到您的类构造函数中。

def __init__(self, filename, book):
    self.filename = filename
    self.book = book

在初始化 AnalyzeBook 类的实例时,还要提供 book 变量。

【讨论】:

    猜你喜欢
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2013-10-12
    • 2013-07-20
    • 2023-03-30
    相关资源
    最近更新 更多