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

问题描述 投票:0回答:1

如何创建一个

__init__
方法,该方法将两个点类型的对象作为输入(左下角和右上角)和一个颜色字符串

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'

我刚刚了解了类方法,所以我不确定如何做到这一点,但这对我来说看起来是错误的...我试图用下面发布的问题的答案来找出答案,但我认为我做得不对

创建一个可以打印角坐标的python Rectangle对象类

python-3.x class methods
1个回答
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'
© www.soinside.com 2019 - 2024. All rights reserved.