我无法获取我想要的代码输出。我想测试一个类和类中定义的函数。这是我的代码:
class Book:
# the class constructor
def __init__(self, author, title, book_id):
self.title = title
self.author = author
self.book_id = book_id
def __str__(self):
s = "Books("+self.author+", "+self.title+", "+self.book_id+")"
return s
def __repr__(self):
return str(self)
我尝试尝试测试的是:
>>> author="Dr. Suess"
>>> title="The Cat in the Hat"
>>> book_id="12345"
>>> Book
<class '__main__.Book'>
>>>
我得到的输出是最后一行。我可能做错了但我不知道如何测试它。如果有人能告诉我那将是伟大的!
答案 0 :(得分:2)
当您在解释器中输入Book
时,您将获得实际Book
类'表示作为输出。 __repr__
和__str__
都引用Book
的实例,而不是类本身。因此,要测试它,您必须实例化Book
:
>>> b = Book("Dr. Suess", "The Cat in the Hat", "12345")
>>> b
"Books(Dr. Suess, The Cat in the Hat, 12345)"
记住 - 一个类就像一个实例的蓝图。在这种情况下,Book
定义了Book
的含义,但它实际上并没有定义实际的Book
对象 - 要做到这一点,你需要创建一个{{1}使用我所做的代码实例。
答案 1 :(得分:0)
>>> Book
<class '__main__.Book'>
如果在控制台中执行上述操作,则不会调用在实例上创建的__repr__
方法。让我解释一下,Book
只是一个类对象,它不是一个实例,因为你没有调用任何参数,但是,如果你做调用参数,这就是你得到的:
>>> from Books import Book
>>> Book
<class Books.Book at 0x027B0AE8>
>>> Book("Hello", "World", '1234')
Books(Hello, World, 1234)
正如您所看到的,因为我们创建了一个方法的实例,我们能够调用__repr__
。