代码之家  ›  专栏  ›  技术社区  ›  Meghan M.

创建/调用类实例,未定义错误对象

  •  -1
  • Meghan M.  · 技术社区  · 7 年前

    我以前没有从头创建过任何类。以前的都非常简单。我接近创建类了吗?我不知道如何调用类的实例。我想做的是创建一个 class Book 并指定各种值(作者名、主目录、输出目录、获取标题的函数、从主目录获取.html文件的函数等)。我想创建一个 课堂用书 对于每个 bookList[i] . 书目 是每本书的主目录。我的类和/或实例调用缺少什么?提前感谢所有的帮助或指点。

    class Book(obj):        
        def __init__(self, inc_dir):
            self.home_dir = inc_dir
            # self.author_name = aName
            # self.target_dir = target_dir
    
    # main #
    bookList = getDirs(homeDir) # returns a list. works.
    # print("len(bookList): ", len(bookList))     
    i = 0    
    while i <= len(bookList):
        curBook = Book(bookList[i])
        print("curBook name: " + curBook.home_dir)
        print("Book Path: " + bookList[i])
        i += 1  
    
    Traceback (most recent call last):
        File "D:\Scripts\Python\batch content editing\html_book_builder.py", line 65, in <module>
            class Book(obj):
        NameError: name 'obj' is not defined
    
    3 回复  |  直到 7 年前
        1
  •  0
  •   Hans Musgrave    7 年前

    当你写作的时候 class Book(obj) ,Python解释器正在查找名为 obj . 你还没有定义 目标 然而,Python抱怨说 目标 已定义。

    你可能看到过 object 具体如下:

    class Book(object):
    

    这些示例将 已经存在 对象 . 没有名称错误,因为该对象已定义。在python3中,可以去掉 对象 完全是。在python2中也可以这样做,但是在这种情况下类的行为会发生一些变化(在2和3之间有很多所谓的“中断”变化)。

    class Book:
    
        2
  •  0
  •   blhsing    7 年前

    你在定义类 Book 从类继承 obj ,但是没有这样的类命名为 目标 ,因此出现错误。如果你是说上课的话 要从基类继承,应该使其从类继承 object :

    class Book(object):
    

    如果您使用的是Python3.x,也可以省略父类规范:

    class Book:
    
        3
  •  0
  •   Saisumanth Gopisetty    7 年前

    我认为这是与obj,这是通过作为一个参数的类书。 应该是的 对象 (小写)在Python2.x中。在Python3.x中,您可以不使用它!