2014-01-10 51 views
0

假設我在下面有一個類和一個方法。如果我想對self.two [0]和other.two [0]以及我可能需要的其他對象執行相同的操作,該怎麼辦?在方法定義中,self.one [0]和other.one [0]會代替什麼,我將如何調用此方法?在不同變量上使用的相同方法

更新,以讓公衆知道我到目前爲止

class OurClass: 

    def __init__(self, name): 
     self.name=name 
     self.one = (x, y) 
     self.two = (a, z) 
     # and so on 

    def ourmethod(self, other): 
     overall = 0 
     if abs(self.one[1] - other.one[1]) <= 10: 
      if abs(self.one[0] - other.one[0]) in [2, 4, 8, 10]: 
       overall += 4     
      elif abs(self.one[0] - other.one[0]) in [3, 9]: 
       overall -= 6     
      elif abs(self.one[0] - other.one[0]) == 6: 
       overall += 3       
      elif abs(self.one[0] - other.one[0]) == 0: 
       overall += 6   
      else: 
       overall += 0 
     else: 
      overall += 0 
+1

您確定要使用'one','two'等屬性而不是列表嗎?另外,你能舉一個例子說明'我們的方法'可能在實際的程序中,所以更容易告訴你需要什麼? – user2357112

+0

@ user2357112當然,我在這裏提出了其他的問題[link](http://stackoverflow.com/questions/20986086/comparing-class-instances-and-attaining-cumulative-score),併發布了大部分代碼。很明顯,我現在糾正了很多錯誤,但主要想法是一樣的。該方法做的東西類似於'def suns' – sivanes

+0

@sivanes真的不是很清楚你在這裏想要什麼**你想要存儲什麼,你想要計算什麼?這裏的實際問題是什麼? –

回答

0

你可以做這樣的事情,保持一個內部類列表,每個對象添加到當它被初始化列表中的一個更好的想法,然後有一個可以調用的內部函數將一個對象與列表中其他創建對象進行比較。

class OurClass: 
    classList = [] 

    def __init__(self, name): 
     self.name=name 
     self.one = (x, y) 
     self.two = (a, z)    
     OurClass.classList.append(self) 

    def ourmethod(self) 
     for n in OurClass.classList: 
      if n != self: 
       # some stuff happens 
+0

我不明白這意味着什麼。這裏的意圖是在''OurClass''的實例之間共享數據嗎? –

+0

給你一個對象列表,每當一個對象被初始化時它被添加到內部類列表中,我發現它在很多場合都很有用。 – Aidan

+0

IHMO我認爲最好是更清楚地瞭解這一點,並使用*註冊表模板*並擁有對象註冊表。有很多圖書館都這樣做。 –

相關問題