Rectangle
Python で単純なクラスを作成しようとしていますが、コードでポイントとサイズも使用する必要があるため、 Rectangle
fromPoint
とSize
. 問題は、私Rectangle
の初期化メソッドが見栄えが悪く、それがどのコードにも適しているかどうかさえわからないことです。これが私が得たものです:
class Size:
def __init__(self, width=0, height=0):
self.width = width
self.height = height
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
class Rectangle(Size, Point):
def __init__(self, size=None, position=None): #I'd rather not use 4 variables
if size:
super(Size, self).__init__(size.width, size.height)
else:
super(Size, self).__init__()
if position:
super(Point, self).__init__(position.x, position.y)
else:
super(Point, self).__init__()
ただし、見た目が悪く、機能しません。TypeError: object.__init__() takes no parameters
これを行うためのよりクリーンな方法はありますか?もちろん、四角形にsize
and position
(オプションにするのではなく) を強制することもできますが、そうはしません。関係ではなく関係をRectangle
持つように定義することもできますが、それは適切な OOP でさえありません。私は主にここで学んでいるので、どちらかをしたくありません。has-a
Size
Point
is-a