如何解决使用字典理解 II 的 Python 类变量赋值
这看起来像是以下内容的副本: 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 举报,一经查实,本站将立刻删除。