我還在苦苦掙扎。此代碼作爲對Python: closest coordinate?的回答提交。很多事情讓我困惑,但我已經完成了大部分工作。浮點法的使用self
對我來說仍然有點棘手(我得到了self.x
和self.y
,但並不確定在這種情況下自我是什麼)。只是提到,因爲它可能涉及主要部分,我不明白,這是closest
方法中的lambda函數。我發現它會返回生成的最小項目,並且它將參數解包爲參數。然後我有點失落。分別是__sub__
和__pow__
分別重新定義了-
和**
,還是它們只是不同的方法?這個lambda函數做什麼?
class Point:
def __init__(self,x,y):
self.x = x
self.y = y
def closest(self,*points):
return min(points,key=lambda x:float(x-self))
def __sub__(self,other):
return Point((self.x-other.x) , (self.y - other.y))
def __pow__(self,powTo):
return Point(self.x**powTo,self.y**powTo)
def __iter__(self):
yield self.x
yield self.y
def __float__(self):
return sum(self**2)**0.5
def __str__(self):
return "(%s,%s)"%(self.x,self.y)
pt0 = Point(9,2)
print pt0.closest(Point(0,0),Point(10,0),Point(10,10))
你嘗試打印自壁櫥或'打印(自點[1])'' – 2014-12-10 21:49:16
self'是值該方法被調用,例如當你使用'pt0.closest(...)'時,'pt0'。 – Barmar 2014-12-10 21:49:23
這些特殊方法的文檔在這裏:https://docs.python.org/2/library/operator.html – Barmar 2014-12-10 21:51:51