LINUX.ORG.RU

__bultins__ - модуль или словарь O_O?

 


0

1

Сабж. Методом тыка обнаружил, что в main-модуле это модуль, а в остальных модулях таки уже словарь. Марк Лутц молчит (скромно говорит что это модуль, не вдаваясь в столь интимные подробности). Это баг, фича, или специальное средство для изничтожения мозга программистов?

★★★★★

Это баг, фича, или специальное средство для изничтожения мозга программистов?

Третье, хотя позиционируется на как второе. Наверное.

Вообще у абсолютно любого объекта можно переопределить специальные методы (не помню названия, какие-то их тех, что с подчёркиваниями), и будет вести себя как словарь.

BattleCoder ★★★★★
()
Ответ на: комментарий от AIv

По-моему, очень здорово, что они вообще указывают, что является частью языка, а что деталями «эталонной» реализации. А не как часто случается: «вот код — он и есть стандарт».

i-rinat ★★★★★
()
Ответ на: комментарий от baverman

Если смертельно, это уже не косяк а п-ц...

Можно скажем

__builtins__ if type(__builtins__) is dict else __builtins__.__dict__
или еще как то, но про это надо ж знать... я думал с ума сошел, на тестах (в main) все работает, в боевом коде говорит что у dict нет аттрибута __dict__ ;-)

AIv ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Здорово. Но нефига не здорово, что какие то вещи зависят от того мэйн это модуль или не мэйн.

AIv ★★★★★
() автор топика
Ответ на: комментарий от baverman

Тем, что я про него до сих пор не знал;-)

AIv ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

В оригинале было все таки «извращений». Думаешь пора закапывать или уже откапывать?;-)

AIv ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

А я и не лажу, но что делать если с контекстом выполнения приходиться возиться...

AIv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.