александр
иначе я не смогу тебе помочь
Beryl
ок
17
александр
окей. Смотри
александр
есть такая штука, называется ipv4. Это грубо говоря интернет адреса
Evgen
У меня есть несколько объектов одного класса. Они считаются одинаковыми, если self.id == other.id. Теперь мне нужно узнать, есть ли нужный мне объект в списке, т.е. foo1 in [foo2, foo3, foo1like], притом foo1 == foo1like, но строчка кода выше возвращает мне False. Что не так?
александр
их очень мало. На всех их не хватит
александр
поэтому люди придумали штуку - NAT
17
Pavel
Evgen
Evgen
Или придётся писать своё?
Evgen
александр
NAT позволяет пользоваться интернетом всем юзерам в условной домашней сети, при этом ipv4 (белый) адрес у них один
Pavel
но списку это ты сделать не сможешь
Pavel
Evgen
Океей
александр
но NAT накладывает свои ограничения, завязанные на принципе работы этого самого NAT
александр
из-за NAT ты не можешь связать сокеты с разных сетей, не прибегая к хитростям
Evgen
Ещё один вопрос. Когда я переопределяю __eq__, если типы несовместимы (т.е. что-то вроде int() == list()), лучше возвращать False или NotImplemented?
александр
(белый ipv4 - уникальный ipv4, видный в интернете)
александр
как можно "пробить" NAT ? используй hamachi
александр
как бесплатный вариант
17
Спасибо
александр
ага
17
Посмотрю
Pavel
Evgen
Pavel
In [5]: class Foo(object):
...: def __init__(self, id):
...: self._id = id
...: def __eq__(self, other):
...: return self._id == other._id if isinstance(other, type(self)) else False
In [9]: Foo(1) == 1
Out[9]: False
In [10]: Foo(1) in [Foo(2), Foo(3)]
Out[10]: False
In [11]: Foo(1) in [Foo(2), Foo(3), Foo(1)]
Out[11]: True
александр
по этому принципу играют в пиратки по сети
александр
Посмотрю
Pavel
александр
тот же minecraft
Pavel
александр
не то сообщ
александр
александр
__ contains __ это in
Pavel
александр
ну да
александр
Pavel
александр
параметры self, other
Pavel
не self.__class__, а type(self)
Evgen
Pavel
Evgen
🌚
александр
Фак, хочу на фриланс пробиться с работы
александр
я на неё не так давно устроился
александр
но это пздц
александр
СКУУУКАААААА
Maxim
александр
пытался, не выходит :(
александр
буду ещё пытаться
александр
не бывает неприступных крепостей
александр
я на это надеюсь
Evgen
александр
дайте код
александр
и чо не работает
Evgen
Ухх
александр
скучно сцук
Evgen
Ща я ещё немного подебажу, потому что собственный поиск тоже не хочет работать
Evgen
Так стоп
Evgen
Кажется, у меня id где-то str, а где-то int
Evgen
Да, в этом и была проблема
Всем спасибо, кто помогал)
Evgen
Странно то, что в определённом месте равенство работало, а в другом — нет
Pavel
хм. зато теперь я точно знаю, что __contains__ листа проверяет на равенство!
https://github.com/python/cpython/blob/master/Objects/listobject.c#L445
Pavel
Эрнест
Не знаю куда задать, то ли в бегинерс, то ли сюда.
Вопрос: зачем в методе вызывается super, разве нельзя без него?
def dispatch(self, request, *args, **kwargs):
self.user_id = request.user.pk
return super().dispatch(request, *args, **kwargs
Pavel
Эрнест
а если вызвать то произойдет?
17
Почему так происходит после компиляции в exe?