Питонический способ сравнения составных классов? - PullRequest
2 голосов
/ 06 апреля 2009

У меня есть класс, который действует как элемент в дереве:

class CItem( list ):
  pass

У меня есть два дерева, каждое с CItem в качестве корня, каждый элемент дерева имеет несколько элементов dict (например, item._test = 1) Теперь мне нужно сравнить эти деревья. Могу предложить перегрузить оператор сравнения для CItem:

class CItem( list ):
  def __eq__( self, other ):
    # first compare items as lists
    if not list.__eq__( self, other ): return False
    # now compare dict members
    if self.__dict__ != other.__dict__: return False
    # seems equal
    return True

Теперь я могу сравнить два дерева, используя '==' или '! ='. Это «питонический» способ или такое сравнение можно сделать проще?

1 Ответ

3 голосов
/ 06 апреля 2009

Я чувствую, что-то вроде

class CItem(list):
    def __eq__(self, other):
        return list.__eq__(self, other) and self.__dict__ == other.__dict__

но это в основном тот же код, что и у вас, только в краткой записи. Я не могу думать о каких-либо более существенных изменениях, которые нужно сделать не по месту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...