我的学校任务有问题。我想要我的最后一个方法来测试两个矩形是否相同。唯一的问题是我似乎无法区分两个不同的高度,widiths和两个不同矩形的不同点(这是矩形的左下角点),任何建议?
非常感谢
class Point():
def __init__(self,x,y):
self.x=x
self.y=y
class Rectangle():
def __init__(self,Point,w,h):
self.Point=Point
self.widith=w**strong text**
self.height=h
def same(self,Rectangle):
if Rectangle.self.Point==self.Point and Rectangle.self.widith==self.widith and Rectangle.self.height==self.height:
return True
else:
return False
答案 0 :(得分:2)
首先,不要对函数参数和类使用相同的名称。它使代码混乱且容易出错。试试这个:
class Rectangle:
def __init__(self, point, width, height):
self.point = point
self.widith = width
self.height = height
现在我假设point
变量是Point
类的实例。在这种情况下,通过==
将一个点与另一个点进行比较将失败,因为默认情况下==
检查两个对象在内存中是否为同一对象时是否相同。
因此,same
方法的实现可能如下所示:
def same(self, other):
return (
self.point.x == other.point.x
and self.point.y == other.point.y
and self.width == other.width
and self.height == other.height
)
如果您在__eq__
类上覆盖内置==
方法(负责Point
运算符的行为),请执行以下操作:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
然后same
方法可以简化为:
def same(self, other):
return (
self.point == other.point # now __eq__ will be called here
and self.width == other.width
and self.height == other.height
)