Python - 调用 Point 中的方法来检查 Point 是否在 Rectangle 中
Python - calling on method in Point to check if Point is in Rectangle
我正在 Python 学习 类 和方法,我正在 'How to Think Like a Computer Scientist' 做 Rectangle/Point 练习。我已经研究过,但还没有遇到与我 运行 遇到同样问题的人。
我在我的矩形 Class 中调用 self.width 和 self.height 时遇到问题。奇怪的是,我在我编写的其他方法中调用它没有问题。当我调试时,它显示我的宽度和高度实例为空,现在我是最后的选择 - 在这里!
这是我使用的代码:
class Point:
"""Sets up a class point. If user doesn't supply args it starts at
0,0)"""
def __init__(self, x = 0, y = 0):
self.x = x
self.y = y
class Rectangle:
'''A class to create rectangle objects '''
def __init__(self, posn, w, h):
self.corner = posn '''position of rectangle as tuple (Point Class)'''
self.width = w '''Sets self.width as w'''
self.height = h '''Sets self.height as h'''
'''Added grow and move methods to display how I'm calling
self.width/height and self.corner.x/y. These both work when I call them'''
def grow(self, delta_width, delta_height):
'''Grow or shrink object by deltas'''
self.width += delta_width
self.height += delta_height
def move(self, dx, dy):
'''Move this object by the deltas'''
self.corner.x += dx
self.corner.y += dy
'''This is where I'm having the problem. '''
def contains(self, posn):
return (self.width > self.corner.x >= 0
and self.height > self.corner.y >= 0)
r = Rectangle(Point(0, 0), 10, 5)
print(r.contains(Point(0,0))) '''Should return True'''
print(r.contains(Point(3,3))) '''Should return True'''
print(r.contains(Point(3, 7))) '''Should return False, but returns True'''
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
class Rectangle:
def __init__(self, posn, w, h):
self.corner = posn
self.width = w
self.height = h
def contains(self, point):
return self.width > point.x >= self.corner.x and self.height > point.y >= self.corner.y
contains
方法所做的是:
1) 检查给定点的x位置是否小于矩形的宽度且大于或等于矩形角的x位置:
self.width > point.x >= self.corner.x
2) 然后对 y 和高度做同样的事情:
self.height > point.y >= self.corner.y
3) 放在一起看起来像:
def contains(self, point):
return self.width > point.x >= self.corner.x and self.height > point.y >= self.corner.y
我正在 Python 学习 类 和方法,我正在 'How to Think Like a Computer Scientist' 做 Rectangle/Point 练习。我已经研究过,但还没有遇到与我 运行 遇到同样问题的人。 我在我的矩形 Class 中调用 self.width 和 self.height 时遇到问题。奇怪的是,我在我编写的其他方法中调用它没有问题。当我调试时,它显示我的宽度和高度实例为空,现在我是最后的选择 - 在这里!
这是我使用的代码:
class Point:
"""Sets up a class point. If user doesn't supply args it starts at
0,0)"""
def __init__(self, x = 0, y = 0):
self.x = x
self.y = y
class Rectangle:
'''A class to create rectangle objects '''
def __init__(self, posn, w, h):
self.corner = posn '''position of rectangle as tuple (Point Class)'''
self.width = w '''Sets self.width as w'''
self.height = h '''Sets self.height as h'''
'''Added grow and move methods to display how I'm calling
self.width/height and self.corner.x/y. These both work when I call them'''
def grow(self, delta_width, delta_height):
'''Grow or shrink object by deltas'''
self.width += delta_width
self.height += delta_height
def move(self, dx, dy):
'''Move this object by the deltas'''
self.corner.x += dx
self.corner.y += dy
'''This is where I'm having the problem. '''
def contains(self, posn):
return (self.width > self.corner.x >= 0
and self.height > self.corner.y >= 0)
r = Rectangle(Point(0, 0), 10, 5)
print(r.contains(Point(0,0))) '''Should return True'''
print(r.contains(Point(3,3))) '''Should return True'''
print(r.contains(Point(3, 7))) '''Should return False, but returns True'''
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
class Rectangle:
def __init__(self, posn, w, h):
self.corner = posn
self.width = w
self.height = h
def contains(self, point):
return self.width > point.x >= self.corner.x and self.height > point.y >= self.corner.y
contains
方法所做的是:
1) 检查给定点的x位置是否小于矩形的宽度且大于或等于矩形角的x位置:
self.width > point.x >= self.corner.x
2) 然后对 y 和高度做同样的事情:
self.height > point.y >= self.corner.y
3) 放在一起看起来像:
def contains(self, point):
return self.width > point.x >= self.corner.x and self.height > point.y >= self.corner.y