2012-09-30 44 views
1

我有我的第一個任務的Python類:Python的第二類初始化

  • 創建一個模塊vectors.py
  • 這將是一個類定義MyVector
  • 構造函數將接受一個參數,這將是一維二維數組。
  • get_vector()方法返回包含向量元素的一維數組。
  • 使用特殊方法__ mul__(self, other)實現MyVector類型的兩個對象的點積。輸出是一個標量(單個數字)。

現在,它似乎是這樣的:

class MyVector: 
    def __init__(self,vector=[]): 
     self.vector=vector 

    def get_vector(self): 
     return (self.vector)   

    def __mul__(self,other): 
     dot=sum(p*q for p,q in zip(self.vector, WHAT IS HERE?)) 
     return(dot) 

我第一載體,但我怎麼能初始化第二?

回答

3

如果假設other參數的特殊__mul__方法是MyVector一個實例,則該實例也將有一個屬性命名vector,您可以訪問:

def __mul__(self,other): 
    dot=sum(p*q for p,q in zip(self.vector, other.vector)) 
    return (dot) 

,並且不使用[]作爲函數參數的默認值,使用如下所示:

def __init__(self,vector=None): 
    self.vector=vector if vector else [] 
+0

它的工作!謝謝!我知道了! – JohnDow

+1

使用'None'作爲「哨兵」,然後'self.vector = vector如果vector不是None else []'可能更正確。另外,對於OP來說更多的是,最好使用'other.get_vector()'來保存鴨子打字並保存一個類的接口 –