Pythonic способ держать связанные переменные? - PullRequest
0 голосов
/ 29 мая 2018

У меня регулярно есть группа (семантически) связанных динамических переменных, доступ к которым осуществляется несколькими методами и которые изменяются во время выполнения.В настоящее время я колеблюсь между тремя способами выделения их «семейства» и сокращения концептуального беспорядка в основном: префикс имени переменной, использование класса или использование словаря.) а может что то еще целиком?У меня есть небольшое предпочтение для классов:

# Prefix
key_bindings_chars = {'right': '->', 'left':'<-'}
key_bindings_codes = ['smooth', 'spiky']
key_bindings_hints = ['Smooth protrutions', 'Spiky protrutions']

print(key_bindings_chars['right'])

# As a class
class key_bindings(object):
    chars = {'right': '->', 'left':'<-'}
    codes = ['smooth', 'spiky']
    hints = ['Smooth protrutions', 'Spiky protrutions']

print(key_bindings.chars['right'])

# As a dict
key_bindings = {
    'chars': {'right': '->', 'left':'<-'},
    'codes': ['smooth', 'spiky'],
    'hints': ['Smooth protrutions', 'Spiky protrutions']
}

print(key_bindings['chars']['right'])

1 Ответ

0 голосов
/ 29 мая 2018

Создание отдельных переменных плохо масштабируется, если вы решили добавить функциональность.Класс без поведения (то есть без методов) также довольно бессмыслен.Мое мнение, что вы должны использовать словарь или именованные кортежи.

>>> from collections import namedtuple
>>> KeyBindings = namedtuple('KeyBindings', 'chars codecs hints')
>>> Chars = namedtuple('Chars', 'right left')
>>> 
>>> key_bindings = KeyBindings(Chars('->', '<-'), ['smooth', 'spiky'], ['Smooth protrutions', 'Spiky protrutions'])
>>> 
>>> key_bindings.hints
['Smooth protrutions', 'Spiky protrutions']
>>> key_bindings.chars.left
'<-'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...