Python 帮助:写一个名为 Book

问题描述 投票:0回答:2

写一个名为 Book 的类定义。 Book 类应该具有书名、作者姓名和出版商名称的数据属性。该类还应具有以下内容:

一个 _ init _ 类的方法。该方法应该为每个数据属性接受一个参数。

每个数据属性的访问器和修改器方法。

一个 _ str _ 方法,它返回一个指示对象状态的字符串。

下面我附上了我的代码。每当我尝试运行它时,我什么也得不到。谁能告诉我我做错了什么?谢谢!:

class Book:
   # Initializer 
    def __init__(self,title,author,publisher):
        self.__title = title
        self.__authr = author
        self.__publr = publisher

   # Mutators 
    def set_title(self,title):
        self.__title = title

    def set_author(self,author):
        self.__authr = author

    def set_publr(self,publisher):
        self.__publr = publisher

   # Accessors
    def get_title(self):
        return self.__title
    
    def get_author(self):
        return self.__authr
    
    def get_publr(self):
        return self.__publr
    
    # _str_method
    def __str__(self):
        book = Book (title=None,author=None, publisher=None)
        book.set_title('Ends with us')
        book.set_author('Colleen Hoover')
        book.set_publr('Simon & Schuster') 
        return("Book's Title:", + self.__title + \
       "\nAuthor:", + str(self.__authr) + \
       "\nPublisher: $", + str(self.__publr))
python accessor mutators
2个回答
0
投票

您的代码的问题似乎与 str 方法的实现有关。您可以通过以下一些更改来修复它:

删除创建新 Book 对象并设置其属性的行。相反,您应该返回当前 Book 对象的属性值。

删除返回语句中字符串文字后面的逗号。这些逗号会导致语法错误。

不是用 + 连接字符串,而是使用 f-strings 将字符串格式化为对象属性的值。

def __str__(self):
        return f"Book's Title: {self.__title}\nAuthor: {self.__author}\nPublisher: {self.__publisher}"

现在您可以为此创建对象:

book1 = Book("Ends with Us", "Colleen Hoover", "Simon & Schuster")
print(book1)

0
投票

看起来你不小心把应该 create

Book
的代码放在你的
__str__
方法中:

    # _str_method
    def __str__(self):
        book = Book (title=None,author=None, publisher=None)
        book.set_title('Ends with us')
        book.set_author('Colleen Hoover')
        book.set_publr('Simon & Schuster') 
        return("Book's Title:", + self.__title + \
       "\nAuthor:", + str(self.__authr) + \
       "\nPublisher: $", + str(self.__publr))

把所有的东西都拿出来放在外面班级(在缩进的顶层),像这样:

    # _str_method
    def __str__(self):
        return("Book's Title:", + self.__title + \
       "\nAuthor:", + str(self.__authr) + \
       "\nPublisher: $", + str(self.__publr))

book = Book(title=None, author=None, publisher=None)
book.set_title('Ends with us')
book.set_author('Colleen Hoover')
book.set_publr('Simon & Schuster') 

然后在最后,你可以通过打印你的

__str__
来测试你的
Book
方法:

print(book)
© www.soinside.com 2019 - 2024. All rights reserved.