Найти - Пользователи
Полная версия: PEP8 и аттрибуты класса
Начало » Python для экспертов » PEP8 и аттрибуты класса
1 2
Master_Sergius
Разница есть - потому как люди будут использовать эту GroupsAndUsers SDK, то есть как будут обращаться к полям модели. Все приведённые примеры выше - это примеры использования:

  
from groups_and_users_sdk import Client
 
 
client = Client(group_url, api_token)
 
user = client.get_user(user_id)
user.first_name = 'Sarah'
user.FloorNumber = 5
result = client.update_user(user_id, user)
 
print(result)
Rodegast
> Нет, не стыдно Потому что, как я уже описал выше - есть исключения….

Я просто не понимаю такую зацикленность на том что твой “лид” называет “pythonic-way”. По моему это как то странно.

> люди будут использовать эту GroupsAndUsers SDK, то есть как будут обращаться к полям модели.

А если админ с пьяна у себя поменяет FloorNumber на FNumber, тогда что? Люди начнут срочно тонны кода рефакторить?

> Вот реально, разве не выглядит это все как костыль на костыле?

Конечно.
py.user.next
Master_Sergius
Есть некий сервис, назовём его GroupsAndUsers
Master_Sergius
И есть вот python sdk, назовём его GroupsAndUsers SDK
И вот между ними должно быть недостающее звено. Сервис GroupsAndUsers просто не доделан. А то, что не доделано, никуда не делось и осталось так же нужно, как и было. Поэтому это придётся теперь доделывать тебе. Обычно недоделанные моменты проще дописывать снаружи, а не внутри недоделки. Поэтому пиши переводчик тупых ответов от сервиса в нормальные и нормальных ответов сервису в тупые. База данных должна быть защищена от любой дурости, вводимой пользователями. И это твоя ответственность.
Master_Sergius
Rodegast
> если админ с пьяна у себя поменяет FloorNumber на FNumber, тогда что? Люди начнут срочно тонны кода рефакторить?
Фокус в том, что в каждой группе есть свой админ, и эти группы могут иметь разные кастомные аттрибуты (базовые аттрибуты конечно же все одинаковые).

py.user.next
И это твоя ответственность.
Ладно, “я все сделаю - я же эксперт” (с) 7 красных линий
Всем спасибо, довольно быстро и активно отписали. Ну а я пошел рисовать линию в форме котенка…

PEHDOM
Master_Sergius
Разница есть - потому как люди будут использовать эту GroupsAndUsers SDK, то есть как будут обращаться к полям модели. Все приведённые примеры выше - это примеры использования:
Ну тут такое, допустим я не погромист, в академиях не кончал и вот я создал кастомный атрибут MyFucked_CustomAttr. А теперь я хочу его использовать. Я делаю user.MyFucked_CustomAttr и получаю attribute error. WTF? каким местом я должен догадаться что вы его превратили в my_fucked__custom_attr потому что вам так показалось более “pythonic-way”? А если я создам два кастомных поля custom_attr и customAttr, что станет?
ИМХО оно должно выглядеть както так: то что обязательно, то обязательно, то что вводит пользователь, должно быть в том виде в каком его вводит пользователь, и причем находиться отдельно от того чтообязательно, чтобы приведение к snake_case виду не прекрыло ваши атрибуты:
 ....
user.first_name = 'Sarah'
user.custom.FloorNumber = 5
user.custom.TAX = 0.2
...

doza_and
Опишу как мы действуем в аналогичной ситуации.

Есть относительно жесткий базовый API который протащен в программный код. Для него есть в программном коде отображение Внешние имена в программные. Изменения согласовываются пользователями и программистами. Доступ сделан в виде:
 proxy_obj.some_var=234
x = proxy_obj.some_var 
Необязательный api вообще отсутствует в основной кодовой базе. Он допустим только в плагинах пользователей.
И там доступ сделан так:
 proxy_obj["someVar"]=234
x = proxy_obj["someVar"]

Изменения в необязательной части не отслеживаются и мы за это вообще не отвечаем. Если берем переменную к себе - то переносим ее в обязательный интерфейс (очевидно исключать из необязательного не нужно).

По сути вопроса - не требуется никакого pythonic way для символьных констант в коде пользовательских скриптов. Это же вообще не код ни по сути ни по форме. (делайте скидку на то что мы много пишем на плюсах где код и не код гораздо жестче разделены).

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

AD0DE412
Master_Sergius
7 красных линий
верное решение нео )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB