Найти - Пользователи
Полная версия: Переменные вместо констант
Начало » Python для новичков » Переменные вместо констант
1
mironich
Нормально ли в модуле, использовать вместо констант переменные? Т.к их в питоне нету….
Например:
BIG_TITS = 4 //Как-бэ константа
class girl(object):
   .....


Если такие переменные используються в в классе, то при многопоточной работе может возникнуть искл. из-за того что два потока обратятся одновременно к этой переменной?
И вообще насколько правильно так писать, или лучше в документации к классу\модулю писать что такая-то цифра\строка означает за это…
Вот например в pycurl сделано так.
Как лучше проверить что в списке есть только определенные обьекты?
Я написал так:
check_tuple = (SOURCES_WEB, SOURCES_IMAGE, 
			SOURCES_VIDEO, SOURCES_NEWS, SOURCES_SPELL)
map(lambda i: if i not in check_tuple: raise SearchError('Invalid sources type'))
Soteric
Если в языке нет констант, то что еще остается делать :)

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

Заменять числа переменными считается правильным.
odnochlen
mironich
Т.к их в питоне нету….
И это печально…
doza_and
odnochlen
И это печально…
Да печально. Наследуем класс от словаря, выкидываем __setattr__ и получаем что-то типа библиотеки констант.

Soteric
то доступ к переменной нужно защитить локом
Что-то мне подсказывает что это зависит от версии интерпретатора. Если вы будете эту переменную менять в виде:
myvar=25

То этот лок получится автоматически из GIL.
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