
Stanislav
27.02.2019
12:02:20
neprivet.ru

Dmitry
27.02.2019
12:02:31
@stas_python он уже в R/O на сутки
как раз хватит времени пин дочитать

Александр
27.02.2019
13:20:30
Кто может объяснить, почему ('__dict__' in dict.__dict__) is False? ?

Google

vlade11115
27.02.2019
13:20:58
Потому что строки __dict__ в словаре нет.

Александр
27.02.2019
13:22:26
в главе Data Model ничего не нашел


vlade11115
27.02.2019
13:22:53
А почему она должна там быть?
>>> dict.__dict__
mappingproxy({'__repr__': <slot wrapper '__repr__' of 'dict' objects>, '__hash__': None, '__getattribute__': <slot wrapper '__getattribute__' of 'dict' objects>, '__lt__': <slot wrapper '__lt__' of 'dict' objects>, '__le__': <slot wrapper '__le__' of 'dict' objects>, '__eq__': <slot wrapper '__eq__' of 'dict' objects>, '__ne__': <slot wrapper '__ne__' of 'dict' objects>, '__gt__': <slot wrapper '__gt__' of 'dict' objects>, '__ge__': <slot wrapper '__ge__' of 'dict' objects>, '__iter__': <slot wrapper '__iter__' of 'dict' objects>, '__init__': <slot wrapper '__init__' of 'dict' objects>, '__len__': <slot wrapper '__len__' of 'dict' objects>, '__getitem__': <method '__getitem__' of 'dict' objects>, '__setitem__': <slot wrapper '__setitem__' of 'dict' objects>, '__delitem__': <slot wrapper '__delitem__' of 'dict' objects>, '__contains__': <method '__contains__' of 'dict' objects>, '__new__': <built-in method __new__ of type object at 0x1058d7ed0>, '__sizeof__': <method '__sizeof__' of 'dict' objects>, 'get': <method 'get' of 'dict' objects>, 'setdefault': <method 'setdefault' of 'dict' objects>, 'pop': <method 'pop' of 'dict' objects>, 'popitem': <method 'popitem' of 'dict' objects>, 'keys': <method 'keys' of 'dict' objects>, 'items': <method 'items' of 'dict' objects>, 'values': <method 'values' of 'dict' objects>, 'update': <method 'update' of 'dict' objects>, 'fromkeys': <method 'fromkeys' of 'dict' objects>, 'clear': <method 'clear' of 'dict' objects>, 'copy': <method 'copy' of 'dict' objects>, '__doc__': "dict() -> new empty dictionary\ndict(mapping) -> new dictionary initialized from a mapping object's\n (key, value) pairs\ndict(iterable) -> new dictionary initialized as if via:\n d = {}\n for k, v in iterable:\n d[k] = v\ndict(**kwargs) -> new dictionary initialized with the name=value pairs\n in the keyword argument list. For example: dict(one=1, two=2)"})


Александр
27.02.2019
13:24:42

vlade11115
27.02.2019
13:24:55
Так, и?

Donaudampf
27.02.2019
13:53:35

Александр
27.02.2019
13:59:49
В dict нет __slots__
Видимо, так имплементирован dict и другие встроенные типы

Zart
27.02.2019
14:00:37
чо
ты хочешь черепах all way down?

Александр
27.02.2019
14:01:10
чо
TypeError: can't set attributes of built-in/extension type 'dict'

Google

Zart
27.02.2019
14:01:20
и?
ты пришел показывать нам дефолтное поведение питоновых типов ради чего?

Александр
27.02.2019
14:02:09
я пришел за ответом, а получил в ответ вопрос

Zart
27.02.2019
14:02:43
потому что тот ключ там нахуй не нужен?

Александр
27.02.2019
14:03:14
нет, это неправильный ответ

Zart
27.02.2019
14:04:17
вопрос еще раз? почему в любойтип.__дикт__ нет ключа __дикт__?
а с какого хуя он там должен быть?

Александр
27.02.2019
14:04:54
('__dict__' in type.__dict__) is True
какого хуя он в type тогда?
если следовать твоей логике

Zart
27.02.2019
14:05:36
ты дурак или дурак?
__дикт__ хранит локальные данные экземпляра

Александр
27.02.2019
14:06:09
я и без тебя прекрасно знаю, зачем используется __dict__

Zart
27.02.2019
14:06:46
тогда в чем вопрос?

Александр
27.02.2019
14:07:03
бля, забей

Николай
27.02.2019
14:07:16
вопрос был почему сам ключ отсутствует

Zart
27.02.2019
14:07:16

Александр
27.02.2019
14:07:25

Google

dmks
27.02.2019
14:07:48

Николай
27.02.2019
14:07:57
Вопрос был почему?)

Александр
27.02.2019
14:08:02
браво

dmks
27.02.2019
14:08:09

Zart
27.02.2019
14:08:14
>>> type.__dict__['__dict__']
<attribute '__dict__' of 'type' objects>
>>>

dmks
27.02.2019
14:08:16

Donaudampf
27.02.2019
14:08:30

Александр
27.02.2019
14:08:42
вот, я подтолкнул вас к расследованию

Donaudampf
27.02.2019
14:09:02
тогда я присоединяюсь к тем, кто не понимает, в чём собственно вопрос

Zart
27.02.2019
14:09:38
dict.__dict__ напоминаю что поиск аттрибутов происходит по наследованию
если у дикта нет аттрибута дикт, то он будет искаться выше пока не упрётся в тайп
если ктото этого еще не знает, пиздует нахуй в доку

Donaudampf
27.02.2019
14:10:58
так ведь как раз аттрибут __dict__ у словаря есть

Николай
27.02.2019
14:11:08

Zart
27.02.2019
14:11:35
потому что у дикта нет дикта, блядь

Milton
27.02.2019
14:12:23

Николай
27.02.2019
14:12:41

Zart
27.02.2019
14:12:42
потому что это тип на си

Николай
27.02.2019
14:12:48
А. Вот и ответ

Google

Александр
27.02.2019
14:13:53
потому что он так имплементирован, да

Николай
27.02.2019
14:15:07
а как ему удалось затереть ключ родителя, если
>>> type(dict) == type
True
Или это потому, что там есть особенность в Си исполнении дикта?

Александр
27.02.2019
14:15:24
Мне было интересно именно в сравнении с другими штуками, такими, как сам type. По идее же он тоже на си написан, разве нет?

Zart
27.02.2019
14:15:52
object и type полны ибаной магии изза того что они в топе иерархии

Александр
27.02.2019
14:16:05
это мы итак все понимаем, что там дохуя магии
но тем не менее
это же чат не джуниоров

Alex
27.02.2019
14:16:42
а вопрос то в чем?

Zart
27.02.2019
14:17:40
питон на 90% состоит из диктов

Александр
27.02.2019
14:18:00
а вопрос то в чем?
ну по сути, почему это истинно ('__dict__' in type.__dict__) and not ('__dict__' in dict.__dict__)

Petr
27.02.2019
14:18:41
Какой-то виртуальный онанизм

Александр
27.02.2019
14:18:50
естественно
а тут запрещен виртуальный онанизм?

Donaudampf
27.02.2019
14:20:08

Milton
27.02.2019
14:20:08

Zart
27.02.2019
14:20:22
аттрибут __dict__ у нас это локальный неймспейс объекта
он особенный, он ридонли
тайп.дикт это метод возвращающий проксю к этому дикту в слоте

Maxim
27.02.2019
14:21:59
Точно ридонли?

Zart
27.02.2019
14:22:21
точно

Google

Maxim
27.02.2019
14:22:27
Хорошо

Zart
27.02.2019
14:22:32
я говорю про референс на дикт, а не его содержимое
т.е. нельзя foo.__dict__= {}

Boris
27.02.2019
14:23:01

Donaudampf
27.02.2019
14:24:08
Точно ридонли?
ну даже вон по ссылке выше
When a new class is created by type.__new__, the object provided as the namespace parameter is copied to a new ordered mapping and the original object is discarded. The new copy is wrapped in a read-only proxy, which becomes the __dict__ attribute of the class object.

Zart
27.02.2019
14:24:18
к чему вообще это всё? ты собрался ебаться с метами?

Maxim
27.02.2019
14:25:18

Александр
27.02.2019
14:25:37

Boris
27.02.2019
14:26:31
кто-нибдь из коллег не пытался почитать документацию?

Zart
27.02.2019
14:27:22
у меня как-то крутилась мысль, что для вызова x()
питон должен вызвать x.__call__()
но ведь для вызова x.__call__, нужно вызвать x.__call__.__call__()
и дальше черепахи
в итоге function.__call__ должен гдето прервать эту рекурсию и сделать ёбаный звонок другу

Boris
27.02.2019
14:29:02
да и он это делает скорее всего тайпкастом

Zart
27.02.2019
14:31:52
скорее он это делает на си

Milton
27.02.2019
20:10:23

Dark
27.02.2019
22:24:07
Скобочки забыл

????????A.
28.02.2019
01:25:04
Скорее всего от глупостью занимается

Заур
28.02.2019
22:31:46
Ребят, вопрос по раббитмкью:
Со стороны паблишера (http сервис к примеру): целесообразно ли держать коннекшн открытым постоянно?
HTTP сервис при каждом запросе: открывает канал, посылает данные в durable очередь и закрывает канал. Если брокер упадет во время сохранения данных на диск, то можно будет сохранить непереданные данные на стороне http сервиса, и уже при следующем бутстарте брокера, послать их первыми.
Ведь как я понимаю, каналы мультиплексируют коннекшн

Vladimir
28.02.2019
22:44:09
Как связаны сохранение данных на паблишере и открытое соединение?
Не, вообще - целесообразно, иначе зачем тебе раббит

Заур
28.02.2019
22:47:23
ну я перехвачу эксепшн, что соединение разорвано и сохраню непереданные данные у себя на паблишере