Какие операторы для перегрузки для Python настроены для правильной работы [duplicate]

Просто добавьте стиль к вашему элементу:

height: 100vh;

Или создайте класс css и добавьте его в элемент:

.full-height {
    height: 100vh;
}
0
задан gt6989b 18 January 2019 в 19:57
поделиться

1 ответ

Согласно https://docs.python.org/2.7/library/stdtypes.html#set-types-set-frozenset ,

Объект множества неупорядоченная коллекция различных хеш-объектов.

Согласно https://docs.python.org/2.7/glossary.html#term-hashable ,

Объект является хэшируемым, если он имеет хеш-значение, которое никогда не изменяется в течение срока его службы (для него требуется метод __hash__()), и его можно сравнивать с другими объектами (для него требуется метод __eq__() или __cmp__()).

У вас есть __eq__, поэтому все, что вам сейчас нужно, это __hash__. (__ne__ также должно быть реализовано, или вы получите результаты, где x == y не соответствует not (x != y).)

class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, other):
        if isinstance(other, Point):
            return self.x == other.x and self.y == other.y
        return NotImplemented

    def __ne__(self, other)
        if isinstance(other, Point):
            return not (self == other)
        return NotImplemented

    def __hash__(self):
        return hash((self.x, self.y))


print(set([Point(1,2), Point(1,2)]))

Результат:

set([<__main__.Point object at 0x02F4F090>])

Для стиля точки, вы также можете захотеть реализовать __repr__, поэтому ваш объект set выглядит красиво. Добавьте в def __repr__(self): return "Point({}, {})".format(self.x, self.y), и ваш набор будет отображаться как set([Point(1, 2)]).

0
ответ дан user2357112 18 January 2019 в 19:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: