TypeError:'module'对象不可订阅

时间:2017-03-31 18:57:06

标签: python

mystuff.py包含一个模块。我正在使用python版本3.6。

mystuff = {'donut': "SHE LOVES DONUTS!"}

mystuffTest.py包含此

import mystuff

print (mystuff['donut'])

运行myst​​uffTest.py时收到的错误如下:

$ python3.6 mystuffTrythis.py 
Traceback (most recent call last):
  File "mystuffTrythis.py", line 3, in <module>
    print (mystuff['donut'])
TypeError: 'module' object is not subscriptable

到目前为止,我还没有在stackoverflow上看到这个确切的错误。谁能解释为什么我收到这个错误?

2 个答案:

答案 0 :(得分:6)

import mystuff正在导入模块mystuff,而不是变量mystuff。要访问您需要使用的变量:

import mystuff
print(mystuff.mystuff['donut'])

编辑:也可以直接导入变量,使用:

from mystuff import mystuff
print(mystuff['donut'])

答案 1 :(得分:0)

我收到此错误是因为稍后的from __ import *语句导入了一个模块,该模块将我的变量绑定到其他东西:

from stuff_a import d
from stuff_b import *
d['key']

在stuff_b.py中,d已绑定到模块,因此发生错误。经验教训:避免从模块中导入*。