[英]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.