Python 这个类中有什么语法错误?

Python 这个类中有什么语法错误?,python,Python,我正在做一个项目,需要我使用str打印出答案。当我运行这段代码时,编译器通过指出返回语句给出语法错误。我很想得到帮助来解决这个问题 我试图删除返回代码周围的括号 import random class Movie: def __init__ (self, title, year, drname, cat, length): self.title = title self.year = year self.drname = drname self.cat = c

我正在做一个项目,需要我使用str打印出答案。当我运行这段代码时,编译器通过指出返回语句给出语法错误。我很想得到帮助来解决这个问题

我试图删除返回代码周围的括号

import random
class Movie:
  def __init__ (self, title, year, drname, cat, length):
    self.title = title
    self.year = year
    self.drname = drname
    self.cat = cat
    self.length = length

  def __str__(self):
     return (self.title + '('self.cat','+ self.year')' +'directed by ' + self.drname + ', length ' + self.length + 'minutes')

#Apollo 13 (Drama, 1995) directed by Ron Howard, length 140 minutes
#It should be printed out as shown above

mv1 = Movie("Apollo 13", 1995, 'Ron Howard', 'Drama', 140)
您的代码状态为self.cat',“+self.year,不带+

改为使用+self.cat+'、'+self.year+

也可以考虑类别和年份之间的空间。如果是,请使用以下方法:

'(' + self.cat + ', ' + self.year + ')'

此外,您的年份和长度需要转换为字符串,例如使用strself.length。

只是一个小的语法错误,return语句中缺少加号

 return (self.title + ' (' + self.cat + ', ' + self.year + ') ' + 'directed by ' + self.drname + ', length ' + self.length + ' minutes.')

这应该行。

除了其他答案之外,我建议使用python 3.6引入的f-strings进行字符串格式化:

return f"{self.title} ({self.cat}, {self.year}) directed by {self.drname} , length  {self.length} minutes"

您应该使用以下格式设置_str__的返回值:

您的代码、PEP8和工作:

class Movie:
    def __init__(self, title, year, drname, cat, length):
        self.title = title
        self.year = year
        self.drname = drname
        self.cat = cat
        self.length = length

    def __str__(self):
        return f"{self.title} ({self.cat}, {self.year}) directed by {self.drname}, length {self.length} minutes"


# Apollo 13 (Drama, 1995) directed by Ron Howard, length 140 minutes
# It should be printed out as shown above    

mv1 = Movie("Apollo 13", 1995, 'Ron Howard', 'Drama', 140)
print(mv1)
输出:

Apollo 13 (Drama, 1995) directed by Ron Howard, length 140 minutes

谢谢你@Andrew Fan提醒我关于strself.length的事。现在我的程序运行得非常好!这绝对是应该做的,尤其是考虑到使用串联访问和转换的字段数量之多。Finswiller的回答应该包括如何做到这一点。始终阅读生成的完整回溯错误消息,如果不确定,请将其包含在问题中。回溯非常友好,并指出了错误语法的列。我不明白,请解释为什么第2行到第10行应该是类块的一部分-它们也需要缩进/空格。错误回溯解释了这一点,最好尝试复制粘贴代码并运行它。是的,你说得对,我现在就纠正了这一点,用应用程序编写代码片段并不方便。
Apollo 13 (Drama, 1995) directed by Ron Howard, length 140 minutes