问题描述
这看起来像是以下内容的副本: Python class variable assignment using dictionary comprehension 只是那个问题他们只处理WHY,但没有针对这个问题提出解决方案。
情况:
class language():
LANGUAGES = ['EN','DE','FR','NL']
ARTICLES_EN = ['the','a']
ARTICLES_DE = ['der','die','das']
ARTICLES_FR = ['le','la','les','las']
ARTICLES_NL = ['het','die']
ARTICLES = [ARTICLES_EN,ARTICLES_DE,ARTICLES_FR,ARTICLES_NL]
print(LANGUAGES)
LANG_VARS = {}
LANG_VARS = {LANGUAGES[i]: {'articles':ARTICLES[i]} for i in range(3)}
def __init__(self):
pass
NameError: name 'LANGUAGES' is not defined
这完全违反直觉。 LANGUAGES 是“原则上”在 var LANG_VARS 之前分配的类变量。
现在显然有理由让 python 在构建类时像这样工作。 (见参考问题)。问题是如何解决这个问题。
预期的结果是类有一个变量,如下所示:
LANGUAGES = ['EN','NL']
ARTICLES_EN = ['the','a']
ARTICLES_DE = ['der','das']
ARTICLES_FR = ['le','las']
ARTICLES_NL = ['het','die']
ARTICLES = [ARTICLES_EN,ARTICLES_NL]
LANG_VARS = {LANGUAGES[i]: {'articles':ARTICLES[i]} for i in range(4)}
LANG_VARS
{'EN': {'articles': ['the','a']},'DE': {'articles': ['der','das']},'FR': {'articles': ['le','las']},'NL': {'articles': ['het','die']}}
谢谢。
请注意,对变量进行硬编码并不是一种理想的选择,因为字典包含一长串变量,而且更容易查看和重新阅读代码以构建如上所示的字典。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)