Использование метода _str_ для определения библиотеки - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю над python практическим вопросом: класс под названием Book уже частично определен. Вам поручено заполнить определение класса. Book принимает две входные переменные в следующем порядке: title и author, которые являются строками. Должны быть две переменные экземпляра, title и author. Вы должны создать 1 метод для книги. Этот метод будет str . Когда экземпляр класса книги распечатывается, он должен использовать следующий формат: «Автор: {имя автора здесь}, Название: {название книги здесь}».

Я прочитал различные руководства и попробовал следующий код, но все равно получите сообщение об ошибке. Может кто-нибудь помочь мне объяснить, что я делаю?

Введенный код:

class Book():
    def __init__(self,title, author):
        self.title = title
        self.author = author
    def __str__(self):
        return ("Author:"+self.author,"Title:"+self.title)

Book1 = Book("Pride and Prejudice","Jane Austen")

print(Book1)

Сообщение об ошибке:

TypeError Traceback (последний вызов был последним) в () 10 Book1 = Book ("Гордость и предубеждение", "Jane Austen") 11 ---> 12 print (Book1)

TypeError: str возвращено не-строка (тип кортеж)

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Ваш код

def __str__(self):
   return ("Author:"+self.author,"Title:"+self.title)

действительно возвращает 2 кортежа:

def __str__(self):
   return (
       "Author:"+self.author,
       "Title:"+self.title,
   )

Если вы используете Python 3.6+, вы ищете

def __str__(self):
   return f"Author: {self.author}, Title: {self.title}"

или для совместимости со всеми версиями

def __str__(self):
   return f"Author: %s, Title: %s" % (self.author, self.title)
0 голосов
/ 16 апреля 2020

Вы также можете использовать:

def __str__(self):
    return 'Author: {}, Title= {}'.format(self.author, self.title)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...