0
分配不同予定義與方法的Point類周邊的另一點旋轉:對象值從什麼是在方法
def Rotate(self, origin, degrees):
d = math.radians(degrees)
O = origin
sin = math.sin(d)
cos = math.cos(d)
print ("original "+self.ToString())
self.x += -O.x
self.y += -O.y
print ("-origin "+self.ToString())
WX = self.x * cos -self.y * sin
WY = self.x * sin +self.y * cos
self = Point(WX,WY)
print ("-origin, after transform "+self.ToString())
self.x += O.x
self.y += O.y
print ("End of method "+self.ToString())
我然後測試方法如下所示:
test = [Point(100,100),Point(110,110)]
test[0].Rotate(test[1],10)
print ("outside of method" + test[0].ToString())
輸出的打印命令顯示在方法結束時分配了所需的值,但之後發生了變化。
爲什麼會發生這種情況?
打印輸出:
original 100 100
-origin -10 -10
-origin, after transform -8.111595753452777 -11.584559306791382
End of method 101.88840424654722 98.41544069320862
outside of method-10 -10
分配'自我=點(WX, WY)'。而self是一個* local *變量。 –
我建議你查看[數據模型](https://docs.python.org/3/reference/datamodel.html) - 'ToString'使它看起來像你正在寫Java([Python不是](http://dirtsimple.org/2004/12/python-is-not-java.html))。你能給工人上一堂[mcve]嗎? – jonrsharpe