所以我想这样做:如何编写一个Python矩形类?
创建一个名为Rectangle
具有以下属性和方法的类(样品运行每种方法包括):
每个实例都应该有一个X,Y,宽度和高度属性。
您应该能够通过创建矩形时的属性如下,(其中x = 5,Y = 10,宽度= 50,以该顺序高度= 100):
r = Rectangle(5, 10, 50, 100)
创建一个将矩形作为字符串返回的方法(提示:实现str)。对于属性值为x = 5,y = 10,width = 50,height = 100的矩形对象,它应返回字符串
Rectangle(5, 10, 50, 100)
。>>> r2 = Rectangle(5, 10, 50, 100) >>> print(r2) Rectangle(5, 10, 50, 100)
创建名为
right
方法,该方法得到矩形的右边缘的值。应该没有参数:>>> r3 = Rectangle(3, 5, 10, 20) >>> r3.right() 13 >>> r4 = Rectangle(12, 10, 72, 35) >>> r4.right() 84
创建一个名为
bottom
方法得到的矩形底边的价值。>>> r5 = Rectangle(5, 7, 10, 6) >>> r5.bottom() 13 >>> r5.y += 12 >>> r5.bottom() 25
创建一个名为
size
方法,返回你的矩形的宽度和高度。>>> r6 = Rectangle(1, 2, 3, 4) >>> r6.size() (3, 4)
创建一个名为
position
方法,返回x和您的矩形的y坐标。>>> r6.position() (1, 2)
创建一个名为
area
方法,返回你的矩形的面积。>>> r6.area() 12
创建名为
expand
方法,该方法的偏移值,并返回与在所有方向上偏移扩大了矩形的副本。>>> r = Rectangle(30, 40, 100, 110) >>> r Rectangle(30, 40, 100, 110) >>> r1 = r.expand(offset=3) >>> r1 Rectangle(27, 37, 106, 116)
原来的矩形不应该被修改。
>>> r Rectangle(30, 40, 100, 110)
负值应该返回一个缩小的矩形。
>>> r.expand(-5) Rectangle(35, 45, 90, 100)
我想不出9号,但我相信我做其他事情正确这里是我到目前为止有:
class Rectangle:
def __init__(self, X, Y, W, H):
self.x = X
self.y = Y
self.w = W
self.h = H
def complete(self):
return self.x,self.y,self.w,self.h
def right(self):
return self.x + self.w
def __str__(self):
return('Rectangle(' + str(self.x) + ',' + str(self.y) + ','
+ str(self.w) + ',' + str(self.h)+')')
def bottom(self):
return self.y + self.h
def __str__(self):
return('Rectangle(' + str(self.y) + ',' + str(self.h) + ','
+ str(self.y) + ',' + str(self.h) + ')')
def size(self):
return self.w,self.h
def position(self):
return self.x,self.y
def area(self):
return self.w * self.h
def expand(self):
pass
print(Rectangle(5,10,50,100).complete())
print(Rectangle(3, 5, 10, 20).right())
print(Rectangle(12, 10, 72, 35).right())
print(Rectangle(5,7,10,6).bottom())
print(Rectangle(1,2,3,4).size())
print(Rectangle(1,2,3,4).position())
print(Rectangle(1,2,3,4).area())
任何帮助深表感谢。
请注意使用你的缩进,你想成为类的一部分的函数需要被缩进为'def __init __()' –
它会一直给我一个错误,如果我缩进其余部分... – whatamii
预期会发生什么'width(-1)'只有40的时候调用''Rectangle''吗? – Kupiakos