如何将两个点传递给__init__以定义矩形?

时间:2017-11-26 01:31:13

标签: python-3.x class methods

如何创建一个__init__方法,它将两个point类型的对象作为输入(左下角和右上角)和一个颜色的字符串

即。

r1= Rectangle(Point(0,0), Point(1,1), 'blue')
r1.get_bottom_left() --> Point(0,0)

到目前为止,我有:

class Rectangle:

    def __init__(self, PointbL, PointtR, 'color'):
         self.bL = PointbL
         self.tR = PointtR
         self.bLx= PointbL[0]
         self.bLy= PointbL[1]
         self.tRx= PointtR[0]
         Self.tRy= PointtR[1]
         self.color='color'

我刚刚学习了类方法,所以我不确定如何做到这一点但这对我来说是错误的...我试图用以下问题的答案来解决它但我不认为我做到了右

Creating a python Rectangle object class that can print the corner coordinates

1 个答案:

答案 0 :(得分:0)

__init__应该有可变参数,而不是特定类型。要支持索引,您需要在Point中实现其他特殊方法,但我认为您的代码中没有必要。此外,我建议使用topleft而不是tL等名称,因为它会提高可读性。

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

class Rectangle:
    def __init__(self, bottomleft, topright, color):   # variable parameters
        self.bottomleft = bottomleft        # no need for self.bottomright_x
        self.topright = topright            # access x by rectangle.topright.x
        self.color = str(color)             # cast to a string

如果必须,可以在init中添加断言,以确保传递给Rectangle的参数是Points。

assert isinstance(bottomright, Point), 'Must enter a Point'