Pull to refresh

Comments 14

python-benedict

Какой-то комбайн. Ладно бы он просто упрощал работу с dict, но в либу ещё зачем-то встроили магию в виде парсинга и экспорт в ini/yaml/xsl/etc, чтение данных из http/s3.

Плюс очень странное решение с keypath как строчки с точками в качестве разделителя. То есть предполагается, что никому не понадобится использовать ключи с точкой внутри?

В документации есть примеры замены разделителя, и также отключения этой функции

Да, странное решение с точками. Так не хватает возможности обращаться к ключам, как к атрибутам. Как в JS

Есть отдельные библиотеки для реализации такой возможности. Так что при желании сделать можно.

Точечная нотация — это возможно, если вы уверены, что все ключи 1) имеют тип str и 2) не совпадают со свойствами и методами класса dict. Но для этого не нужна библиотека, так как всё решается простой обёрткой с __getattr__. Однако, если указанные выше условия удовлетворяются, вам проще использовать dataclass или named tuple.

Да это все понятно, но слишком много бойлерплейта. Иногда просто хочется написать foo?.bar?.baz без необходимости определять структуры данных и их инициализировать.

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

Ну где ещё такое можно написать, например?

{
  True: function1,
  False: function2,
}[Object1.find(conditions=(1, 2, 3)).exist](args, kwargs)

Так в JS у вас нет такой структуры, как словарь. Все объекты просто экземпляры object

В других языках (в том числе, питоне) есть адекватное разделение, где одно - это атрибут, а другое - item

Я не ярый хейтер JS, но их подход к ООП (точнее ПОП вместо него) меня напрягает, и это определенно является минусом языком нежели плюсом

Мне наоборот понравилось их "обратное наследование", это много интересных приёмов может дать. Только этим почему-то мало кто пользуется, вместо этого JS всё больше развивается в сторону традиционных парадигм. Ну и родовая травма у него (впрочем, она и у Питона есть, просто не такая существенная).

Это не ПОП вместо ООП.
Прототипное программирование является стилем ООП, при котором отсутствуют классы, а вместо них прототипы.
От того и разделение на ветки: ООП классовое и ООП прототипное. Есть еще другие ветки.
Ну и да, будет КОП, ПОП и так далее :D

Sign up to leave a comment.

Articles