2 回答

TA貢獻(xiàn)1806條經(jīng)驗 獲得超5個贊
我得到了我正在尋找的答案。我想要一個對象充當(dāng)可以存儲類變量的容器,但我不知道我可以從其中創(chuàng)建該類的新對象!
import math
class Points(object):
def __init__(self, x, y, z):
self.x=x
self.y=y
self.z=z
def __sub__(self, no):
return Points((self.x-no.x),(self.y-no.y),(self.z-no.z))
def dot(self, no):
return (self.x*no.x)+(self.y*no.y)+(self.z*no.z)
def cross(self, no):
return Points((self.y*no.z-self.z*no.y),(self.z*no.x-self.x*no.z),(self.x*no.y-self.y*no.x))
def absolute(self):
return pow((self.x ** 2 + self.y ** 2 + self.z ** 2), 0.5)
正如您所看到的,使用點(即類 Points 的構(gòu)造函數(shù)),我可以存儲任何操作的結(jié)果,并將其作為對象返回,同時不更改我的輸入對象。

TA貢獻(xiàn)1884條經(jīng)驗 獲得超4個贊
如果您想要做的是重用已傳遞給類對象的變量,則只需在語句中__init__或在使用它的函數(shù)中復(fù)制它即可。
例如
class Foo:
??
? def __init__(self, my_var1, my_var2):
? ? self.my_var1 = my_var1
? ? self.my_var2 = my_var2
? def bar(self):
? ? bar_var1 = self.my_var1
? ? bar_var2 = self.my_var2
? ? bar_var1 = bar_var1 + bar_var2
? ? return bar_var1
盡管如此,我對為什么你試圖self
在cross
函數(shù)中返回(就像self
類參數(shù)一樣)感到有點困惑,而且你似乎沒有在其預(yù)期目的中使用它。
添加回答
舉報