1

这是我的代码。有两个文件,一个包含 Book 类对象,一个包含测试对象。这一切都在python中

书本.py

class Book(object):
     """Represents a book in a library."""

    def __init__(self, title, author, patron):

        self._title = title
        self._author = author
        self._patron = patron

    def title(self):
        """Returns Book Title"""
        return self._title

    def author(self):
       """Returns the Author's Name."""
       return self._author

    def patron(self):
       """Returns the name of the patron."""
       return self._patron

    def __str__(self):
        return "Title: " + self._title + "\n"
        return "Author: " + self._author + "\n"
        return "Patron Currently Assigned: " + self._patron

测试脚本.py

from patron import Patron
from book import Book

s = Book("Death", "William", "George")

s.title()
s.author()
s.patron() 
s.title()

str(s)

当我运行程序 testScript.py 时,它没有返回任何错误,但控制台上也没有显示任何内容。你知道为什么当我调用这些方法时什么都没有出现吗?我尝试过使用 IDLE 和 eclipse,但两者都没有输出。

4

3 回答 3

3

我敢肯定,这就是您遇到的核心困惑。

在交互式解释器中,当您键入以下内容时:

s.title()

解释器捕获返回值并将其重定向到标准输出。这与您运行脚本时不同;这不会发生。因此,这些行说明了“执行title方法,然后立即丢弃结果”。

你需要print你想看到的。

于 2013-10-31T04:29:41.523 回答
1

改变这个:

str(s)

对此:

print s

请记住,您正在定义__str__方法,因此当您制作时:

print OBJECT

它将调用__str__返回 a 的方法string

您可能还想更改您的__str__方法,因此它返回一个完整的字符串:

return "Title: " + self._title + "\n" +\
    "Author: " + self._author + "\n" +\
    "Patron Currently Assigned: " + self._patron

编辑

请记住,按顺序返回多次是没有用的,因为当程序到达第一个return时,它将退出该方法。

于 2013-10-31T04:22:29.357 回答
0

你必须写

    print s
    print s.title() 
    print s.author()  
    print s.patron

您的代码的问题是它返回 book 的属性而不是打印它们。
您也可以这样做:- 不要在函数内返回语句,而是放置打印语句

    def title(self):
        print self.title 

对于其他功能也是如此。

于 2013-10-31T04:24:10.250 回答