Уведомления

Группа в Telegram: @pythonsu

#1 Март 14, 2015 03:38:36

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

vanished

Приватные (вспомогательные) поля и методы надо начинать с двойного подчеркивания (__).
Нет смысла наследовать от object.
Так компактнее для тривиальных функций:

@property
def encoding(self): return self.__encoding

Генератор выгоднее со всех точек зрения:
def __normalized_params(params):
    if isinstance(params, dict): 
        for k, v in params.items():
            if isinstance(v, (list,tuple)): yield from ( (k, _) for _ in v )
            else: yield k, v
    else: yield from params



Офлайн

#2 Март 14, 2015 21:09:09

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

vanished

Isem
Приватные (вспомогательные) поля и методы надо начинать с двойного подчеркивания (__).

Позвольте не согласиться. Кто Вам сказал такую глупость?
Во-первых нормальные люди так не делают. Для “вспомогательных” полей, которые не являются частью интерфейса как раз таки рекомендуется использовать символ “_” (одниночное подчеркивание). Двойное же подчеркивание может быть оправдано только в случае, если нужно избежать переопределения при наследовании.
Кроме этого в множестве opensource проектов начиная от веб-фреймворков и заканчивая OpenStack двойное подчеркивание используется в единичных случаях.

Стоит обратиться к официальной документации:
Private Variables

Private” instance variables that cannot be accessed except from inside an object don’t exist in Python. However, there is a convention that is followed by most Python code: a name prefixed with an underscore (e.g. _spam) should be treated as a non-public part of the API (whether it is a function, a method or a data member). It should be considered an implementation detail and subject to change without notice.

Since there is a valid use-case for class-private members (namely to avoid name clashes of names with names defined by subclasses), there is limited support for such a mechanism, called name mangling. Any identifier of the form __spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with leading underscore(s) stripped. This mangling is done without regard to the syntactic position of the identifier, as long as it occurs within the definition of a class.



Офлайн

#3 Март 15, 2015 04:33:01

tz4678@gmail.com
Зарегистрирован: 2014-12-07
Сообщения: 71
Репутация: +  -2  -
Профиль   Отправить e-mail  

vanished

vanished

Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:33)

Офлайн

#4 Март 15, 2015 04:57:49

tz4678@gmail.com
Зарегистрирован: 2014-12-07
Сообщения: 71
Репутация: +  -2  -
Профиль   Отправить e-mail  

vanished

vanished

Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:35)

Офлайн

#5 Март 15, 2015 12:25:20

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

vanished

tz4678@gmail.com, Вы бы для начала прошлись утилитой pep8 по своему коду. А уже после поговорили бы о дальнейших правках.



Офлайн

#6 Март 15, 2015 18:53:46

tz4678@gmail.com
Зарегистрирован: 2014-12-07
Сообщения: 71
Репутация: +  -2  -
Профиль   Отправить e-mail  

vanished

vanished

Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:36)

Офлайн

#7 Март 16, 2015 03:27:26

tz4678@gmail.com
Зарегистрирован: 2014-12-07
Сообщения: 71
Репутация: +  -2  -
Профиль   Отправить e-mail  

vanished

vanished

Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:38)

Офлайн

#8 Март 17, 2015 14:35:54

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

vanished

cutwater
Позвольте не согласиться. Кто Вам сказал такую глупость?
Во-первых нормальные люди так не делают.
Расскажите, пожалуйста, кто такие нормальные люди? Может быть это вы?
Ваш копипаст по поводу использования приватных переменных утверждает, что _name методы/функции не предназначены для переопределения по некоему соглашению, которого вы, очевидно, придерживаетесь по причине стадного чувства.



Отредактировано Isem (Март 17, 2015 14:49:52)

Офлайн

#9 Март 17, 2015 14:40:58

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

vanished

tz4678@gmail.com
Генераторам к сожалению не нашлось применения `urllib.parse.urlencode` с ними не работает
Оберните генератор в list или в tuple и все решится само собой. Или лучше воспользуйтесь другой библиотекой, которая не привязана к спискам.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version