2016-11-24 29 views
1

我想知道如果我沒有保存在Rectangle類中的x座標和y座標,我可以如何計算我的對象的邊界名爲'Rectangle'。在給定Python中的另一個類的情況下計算我的對象的邊界

class Point: 

    def __init__(self, xcoord=0, ycoord=0): 
     self.x = xcoord 
     self.y = ycoord 

    def setx(self, xcoord): 
     self.x = xcoord 

    def sety(self, ycoord): 
     self.y = ycoord 

    def get(self): 
     return (self.x, self.y) 

    def move(self, dx, dy): 
     self.x += dx 
     self.y += dy 

class Rectangle: 

    def __init__(self, bottom_left, top_right, colour): 
     self.bottom_left = bottom_left 
     self.top_right = top_right 
     self.colour = colour 

    def get_colour(self): 
     return self.colour 

    def get_bottom_left(self): 
     return self.bottom_left 

    def get_top_right(self): 
     return self.top_right 

    def reset_colour(self, colour): 
     self.colour = colour 

    def move(self,dx,dy): 
     Point.move(self.bottom_left,dx,dy) 
     Point.move(self.top_right,dx,dy) 

    def get_perimeter(self): 

我打電話在Python Shell的功能在以下格式

r1=Rectangle(Point(),Point(1,1),'red') 
r1.get_perimeter() 

回答

2

這比Python的基本幾何形狀。

由於您只提供左下角和右上角的點,我假設矩形的兩邊平行於x/y軸。在這種情況下:

def get_perimeter(self): 
    return 2*(abs(self.top_right.x-self.bottom_left.x)+abs(self.bottom_left.y-self.top_right.y)) 

我已經把abs功能的好辦法,因爲左&右,上&底部不預設座標系的方位。

注意:您xy「拯救」的定義2點(訪問)在你Rectangle類,不能直接作爲直接的成員,但作爲成員中的一員。

+0

如何使用.x,因爲它不在矩形類中。 –

+0

是否因爲我可以使用任何類中定義的任何方法,如果它們都在同一個文件中?因此我可以使用任何類的任何變量。 –

+0

您可以通過具有'x'成員的'Point'對象訪問'x'。你在'Rectangle'類中有2個'Point'對象。 –

相關問題