0

2D でポリゴンのクラスを定義する必要があります。タプル (座標) のリストで定義された各ポリゴンは、次のようになります。

poly = [(0.5,0),(1,0.5),(0.5,1),(0,0.5)]

(ソートの必要はありません) 左端から時計回りにソートされます。

私の仕事は、このクラスを適切に定義し __init____repr__ ポイント is_inside(self, q)がポリゴンの内側にあるかどうかをチェックする関数です。

__repr__印刷するメソッド'[(0.5,0),(1,0.5),(0.5,1),(0,0.5)]'

これまでのところ、これは私が持っているものです:

class Polygon2D:
    def __init__(self, pts):
        for index in range(len(pts)):
            self.index = pts[index]
    def __repr__(self):

        return str(self)

実行しようとすると、プログラムがクラッシュします。私を助けてください!!

4

1 に答える 1

4

str(self)あなたの実装でself.__str__which をデリゲートする呼び出しは を呼び出し、サークル全体を再び開始します。そうです、あなたは無限再帰を引き起こしました。self.__repr__str(self)

ただし、より差し迫った問題はptsリストを保存することです。最後のポイントのみを保存し、残りを破棄します。ループ内で に割り当てるとself.index、最後の割り当てが優先されます。

pts属性として直接保存し、それを の結果として文字列に変換するだけです__repr__:

class Polygon2D:
    def __init__(self, pts):
        self.points = pts

    def __repr__(self):
        return str(self.points)

ポイントのリスト全体を保存すると、is_inside関数の実装も実現可能になります。

于 2015-05-18T13:03:05.740 に答える