2014-01-10 2 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' 등의 속성을 원하십니까? 또한 실제 프로그램에서 'ourmethod'가 무엇인지 예를 들려 주시겠습니까? 그래서 필요한 것을 쉽게 말하시겠습니까? – user2357112

+0

@ user2357112 물론, 이전에 여기에 다른 것을 묻고있었습니다. (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 이것에 대해 좀 더 명확히하고 * Registry Patten *을 사용하고 오브젝트의 레지스트리를 가지고있는 것이 더 좋습니다. 이를 수행하는 많은 라이브러리가 있습니다. –

관련 문제