Python 意外语法错误OOP
我目前正在为Python编写一个作业,涉及三个类:矩形、画布和点。当我尝试将第二个矩形设置为已设置的矩形时,出现语法错误:Python 意外语法错误OOP,python,class,oop,syntax-error,Python,Class,Oop,Syntax Error,我目前正在为Python编写一个作业,涉及三个类:矩形、画布和点。当我尝试将第二个矩形设置为已设置的矩形时,出现语法错误: >>> r1 = Rectangle(Point(), Point(1,1), "red") >>> r2=eval(repr(r1)) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> r2=eval(
>>> r1 = Rectangle(Point(), Point(1,1), "red")
>>> r2=eval(repr(r1))
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
r2=eval(repr(r1))
File "<string>", line 1
I am a red rectangle with bottom left corner at (0, 0) and top right corner at (1, 1).
^
SyntaxError: invalid syntax
谁能告诉我我做错了什么吗你的
\uuuu repr\uuuu
方法很好用。出错的地方是将结果传递给eval()
函数
eval()
接受字符串输入并将其作为Python代码执行。您的\uuuu repr\uuuu
方法不返回Python代码,而是返回一个英语句子
删除eval()
调用,您不需要它来显示方法的结果<代码>r2=报告(r1)有效
如果您希望生成一个有效的Python表达式以允许您重新创建对象,则需要从\uuuu repr\uu
方法返回这样一个表达式:
def __repr__(self):
return 'Rectangle({!r}, {!r}, {!r})'.format(self.p1, self.p2, self.color)
!r
告诉str.format()
获取对象的repr()
值,因此对于Point
类,您还需要生成一个类似的\uu repr\uu
方法,该方法返回一个可以重新创建这些对象的字符串。为什么要尝试解释repr()
作为Python代码输出?我也这么想!!但是我们所说的这一行是老师给我们的,它必须使用这一行,有什么想法吗???@MatteoColombi:我不知道你的老师希望\uuuuu repr\uu
方法返回什么。也许您需要返回一些实际上可以作为Python代码执行的东西?例如,返回字符串'Rectangle(Point(),Point(1,1),“red”)
,该字符串可执行以再次复制同一对象。但我看不到你的家庭作业,也看不到你的老师一直在教你什么。我也不确定,但她给了我们行r2=eval(repr(r1)),并期望它将r2设置为r1,但在我的函数中,它说当我将该行放入shell时,出现语法错误
def __repr__(self):
return 'Rectangle({!r}, {!r}, {!r})'.format(self.p1, self.p2, self.color)