Уведомления

Группа в Telegram: @pythonsu

#1 Май 12, 2021 16:45:10

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

PEP8 и аттрибуты класса

Разница есть - потому как люди будут использовать эту 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)



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Отредактировано Master_Sergius (Май 12, 2021 16:45:42)

Офлайн

#2 Май 12, 2021 19:02:47

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2535
Репутация: +  177  -
Профиль   Отправить e-mail  

PEP8 и аттрибуты класса

> Нет, не стыдно Потому что, как я уже описал выше - есть исключения….

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

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

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

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

Конечно.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Май 12, 2021 19:03:35)

Офлайн

#3 Май 12, 2021 19:22:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8145
Репутация: +  734  -
Профиль   Отправить e-mail  

PEP8 и аттрибуты класса

Master_Sergius
Есть некий сервис, назовём его GroupsAndUsers
Master_Sergius
И есть вот python sdk, назовём его GroupsAndUsers SDK
И вот между ними должно быть недостающее звено. Сервис GroupsAndUsers просто не доделан. А то, что не доделано, никуда не делось и осталось так же нужно, как и было. Поэтому это придётся теперь доделывать тебе. Обычно недоделанные моменты проще дописывать снаружи, а не внутри недоделки. Поэтому пиши переводчик тупых ответов от сервиса в нормальные и нормальных ответов сервису в тупые. База данных должна быть защищена от любой дурости, вводимой пользователями. И это твоя ответственность.



Офлайн

#4 Май 12, 2021 19:51:57

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

PEP8 и аттрибуты класса

Rodegast
> если админ с пьяна у себя поменяет FloorNumber на FNumber, тогда что? Люди начнут срочно тонны кода рефакторить?
Фокус в том, что в каждой группе есть свой админ, и эти группы могут иметь разные кастомные аттрибуты (базовые аттрибуты конечно же все одинаковые).

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



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#5 Май 12, 2021 20:26:28

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PEP8 и аттрибуты класса

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
...



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Май 12, 2021 20:37:22)

Офлайн

#6 Май 12, 2021 20:44:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4091
Репутация: +  251  -
Профиль   Отправить e-mail  

PEP8 и аттрибуты класса

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

Есть относительно жесткий базовый API который протащен в программный код. Для него есть в программном коде отображение Внешние имена в программные. Изменения согласовываются пользователями и программистами. Доступ сделан в виде:

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

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

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

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



Отредактировано doza_and (Май 12, 2021 20:51:20)

Офлайн

#7 Май 16, 2021 08:27:25

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 890
Репутация: +  40  -
Профиль   Отправить e-mail  

PEP8 и аттрибуты класса

Master_Sergius
7 красных линий
верное решение нео )



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version