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

时间:2018-08-29 05:35:16

标签: python class instance

我以前没有从头开始创建任何类。以前的任何内容都非常简单。我快要创建课程了吗?我对如何调用类的实例感到困惑。我想做的是创建一个class Book并分配各种值(作者名,主目录,输出目录,获取标题的函数,从主目录获取.html文件的函数等)。我想为每个class Book创建一个bookList[i]的新实例。 bookList[i]是每本书的homeDir。请问我缺少什么类和/或实例调用?预先感谢您提供的所有帮助或指示。

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 个答案:

答案 0 :(得分:0)

正在发生的事情是,当您编写class Book(obj)时,Python解释器正在寻找名为obj的东西。您尚未定义obj,因此Python抱怨没有定义任何名为obj的东西。

您可能已经看到object的示例,如下所示:

class Book(object):

这些示例是已经存在的 object的子类。没有名称错误,因为该内容已经定义。在Python 3中,您可以完全摆脱object。您也可以在Python 2中使用,但是在这种情况下,类的行为会有所变化(在2和3之间有很多所谓的“破坏”更改)。

class Book:

答案 1 :(得分:0)

您正在定义类Book以从类obj继承,但是还没有名为obj的类,因此会出现错误。如果要让类Book从基类继承,则应该使它从类object继承:

class Book(object):

,或者如果您使用的是Python 3.x,则可以省略父类规范:

class Book:

答案 2 :(得分:0)

我认为obj是作为Class Book的参数传递的。 在Python 2.x中应该是 object (小写)。在Python 3.x中,您可以省去它!