Python 矩形内的点

Python 矩形内的点,python,function,class,if-statement,rectangles,Python,Function,Class,If Statement,Rectangles,我有一个点和矩形类。我试图在rectangle类中编写一个函数来检查点是否在矩形中,但是我得到了语法错误 class Point(object): def __init__(self, x=0, y=0): self.x = x self.y = y def __str__(self): return "({},{})".format(self.x, self.y) class Rectangle(object): def __

我有一个点和矩形类。我试图在rectangle类中编写一个函数来检查点是否在矩形中,但是我得到了语法错误

class Point(object):
    def __init__(self, x=0, y=0):
       self.x = x
       self.y = y

    def __str__(self):
       return "({},{})".format(self.x, self.y)

class Rectangle(object):
   def __init__(self, posn, w, h):
      self.corner = posn
      self.width = w
      self.height = h

   def __str__(self):
      return "({0},{1},{2})".format(self.corner, self.width, self.height)
   def contains(self):
      if self.x < self.width and self.y < self.height:
         return True
      else:
         return False
类点(对象):
定义初始化(self,x=0,y=0):
self.x=x
self.y=y
定义(自我):
返回“({},{})”格式(self.x,self.y)
类矩形(对象):
定义初始值(self、posn、w、h):
self.corner=posn
自宽=w
自高度=h
定义(自我):
返回“({0},{1},{2})”格式(self.corner,self.width,self.height)
def包含(自身):
如果self.x
您必须与缩进保持一致。代码中混合了四个、三个和两个空格缩进,大多数人遵循的标准样式指南

class Point(object):
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def __str__(self):
        return "({},{})".format(self.x, self.y)

class Rectangle(object):
    def __init__(self, posn, w, h):
        self.corner = posn
        self.width = w
        self.height = h

    def __str__(self):
        return "({0},{1},{2})".format(self.corner, self.width, self.height)

    def contains(self):
        if self.x < self.width and self.y < self.height:
            return True
        else:
            return False
类点(对象):
定义初始化(self,x=0,y=0):
self.x=x
self.y=y
定义(自我):
返回“({},{})”格式(self.x,self.y)
类矩形(对象):
定义初始值(self、posn、w、h):
self.corner=posn
自宽=w
自高度=h
定义(自我):
返回“({0},{1},{2})”格式(self.corner,self.width,self.height)
def包含(自身):
如果self.x
您的
contains
方法不接受点作为参数,只接受
self
(这是您调用该方法的矩形)。您需要添加一个参数,然后在查找点的信息时使用它

您可能还需要检查矩形的所有边界,因此将有四个比较。您可以通过使用Python的运算符链简化比较(
a
相当于
a

此外,不需要
if
语句,您可以直接返回比较的布尔结果

以下是我认为应该适用于您的代码,尽管我可能没有正确猜测您是如何处理
角的
值的:

def contains(self, point):
    return (self.corner.x <= point.x <= self.corner.x + self.width and
            self.corner.y <= point.y <= self.corner.y + self.height)
def包含(自身、点):

return(self.corner.x发布错误…这将有帮助:)一件显而易见的事情:
如果self.x
。。。矩形类不定义
x
y
属性。另外,
contains()
不接受任何参数。。。它测试的是什么?r=矩形(点(0,0),10,5)r.contains(点(0,0))应该返回真r.contains(点(3,3))应该返回真r.contains(点(3,7))应该返回假所有矩形是否都有与x和y轴平行的边?