簡體   English   中英

如何使用__repr__方法python 2.7

[英]How to use __repr__ method python 2.7

我需要在2D中定義一類多邊形。 由元組(坐標)列表定義的每個多邊形,例如:

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

(無需排序)這些點從最左邊的點開始順時針排序。

我的任務是正確定義此類__init____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)

當我嘗試運行它時,程序崩潰。 請幫我!!

str(self)調用self.__str__ ,它將委托給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函數成為可實現的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM