我在从其他文件导入字典时遇到问题(我使用python 2.7)
# src/config/config_bankheist.py
bankheist_config = {
###############################
# SECTION 1 : ENTERY OF HEIST #
###############################
'activation_command': '!bankheist',
(...) # More key/values here
} # End of bankheist_config
当我尝试将其导入到使用它的主文件中时:
#src/lib/commands/bankheist.py
import string
from src.lib.timers import InfiniteTimer
import src.lib.irc as irc_
from src.config.config import config
from src.config.config_bankheist import bankheist_config as bankheist
def check_init_status():
try:
return bankheist['init_status']
except KeyError:
bankheist['init_status'] = False
return False
所以在这里我尝试通过键' init_status'来返回值。第一次,它找不到密钥,因为银行家还没有被启动......所以我很正常地找不到KeyError。相反,我得到一个 TypeError:'函数'对象没有属性' __ getitem __' 。
我尝试将init_status键添加到字典中并在False上初始化它,我甚至尝试导入作为全局变量(假设它在配置文件中是全局变量,并且在定义方法上是全局变量),我试图把bankhiest_config作为银行家在同一个文件中,并且它不会起作用..
我有类似于config_command.py(与config_bankheist.py相同的文件夹)和commands.py(与bankheist.py相同的文件夹)并且有效。所以我不确定我在这里做错了什么
提前致谢, Laurens的
PS:如果感兴趣,完整代码在github上:https://github.com/LaurensScheldeman/TwitchBot/commits/master
答案 0 :(得分:1)
您有一个名为bankheist
的函数对象,因此在dict
函数定义
bankheist
对象
尝试保留初始dict
对象名称bankheist_config
import string
from src.lib.timers import InfiniteTimer
import src.lib.irc as irc_
from src.config.config import config
from src.config.config_bankheist import bankheist_config
def check_init_status():
try:
return bankheist_config['init_status']
except KeyError:
bankheist_config['init_status'] = False
return False