2014-01-10 6 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

Вы действительно хотите использовать атрибуты «один», «два» и т. Д., А не список? Кроме того, вы могли бы привести пример того, что «наш метод» может быть в реальной программе, так что проще сказать, что вам нужно? – 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 Я думаю, что лучше быть более явным и использовать * Registry Patten * и иметь реестр объектов. Есть много библиотек, которые это делают. –

Смежные вопросы