0

ポイントから作られた長方形で作られた建物を構築するために、次のクラスが定義されているとしましょう。Building クラス内から属性ごとにすべての長方形を照会するにはどうすればよいですか? ここではスーパーメソッドを使用することになっていると思いますが、オンラインで読んだ後、それを理解できません。ありがとうございました。


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

class Rectangle(Point):
    def __init__(self, north, east, south, west):
        self.north = north
        self.east = east
        self.south = south
        self.west = west

class Building(Rectangle):
    def __init__(self, rectangles):
        self.rectangles = rectangles

    #Search through all the points to find one with matching attributes
    def find_point_by_elevation(self, y):
        for rectangle in self.rectangles:
            if rectangle.south.y = y:
                return rectangle.south

#Testing the Code
n, e, s, w = Point(1,2), Point(2,1), Point(0,1), Point(0,1)
rectangle1 = Rectagnle(n,e,s,w)

n, e, s, w = Point(10,20), Point(20,10), Point(0,10), Point(0,10)
rectangle2 = Rectagnle(n,e,s,w)

my_building = [rectangle1, rectangle2]

my_building.find_point_by_elevation(1)
4

1 に答える 1

1

あなたの遺産は意味がありません。建物は長方形ではなく、長方形は点ではありません。これは継承ではなく構成のための仕事であり、ポイントなどを渡すことでそれを正しく行っています-継承をやめるだけです。

それとは別に、あなたの質問が何であるかわかりません。クエリする属性をインデックス化する何らかのデータ構造に保存しない限り、既に行っている反復処理以外に属性をクエリする方法はありません。

于 2013-03-14T15:54:08.650 に答える