gpt4 book ai didi

保存相关变量的 Pythonic 方式?

转载 作者:太空狗 更新时间:2023-10-29 23:56:50 26 4
gpt4 key购买 nike

我经常有一组(语义上)相关的动态变量,这些变量可以通过多种方法访问并在运行时更改。我目前在三种突出其“家族”并减少 main 中的概念困惑的方式之间摇摆不定:变量名前缀、使用类或使用字典。

这些是普遍首选的(即 pythonic)还是完全不同的东西?我稍微偏爱类(class):

# 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'])

最佳答案

如果您决定添加功能,创建不同的变量并不能很好地扩展。没有行为(即没有方法)的类也是毫无意义的。我的意见是您应该使用字典或命名元组。

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

关于保存相关变量的 Pythonic 方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50580479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com