子类不识别父类的模块导入?

时间:2012-05-06 16:00:27

标签: python python-module

我在两个不同的模块中有两个课程:

  • animal.py
  • monkey.py

animal.py:

import json

class Animal(object):
    pass

猴:

import animal

class Monkey(animal.Animal):

    def __init__(self):
        super(Monkey, self).__init__()

        # Do some json stuff...

当我尝试实例化Monkey时,我得到了一个

NameError: global name 'json' is not defined

但是我在超类的定义模块中导入json,为什么不加载它?

2 个答案:

答案 0 :(得分:11)

已加载,但其名称在monkey.py范围内不可用。

您可以输入animal.json来获取它(但为什么会这样),或者只需输入

import json

monkey.py中也是如此。 Python将确保模块未加载两次。

答案 1 :(得分:2)

好吧,python导入不能用作C #include预处理器指令。它们仅将模块导入导入模块的命名空间,而不导入全局命名空间。所以,你将不得不在你打算使用它的每一个模块中导入json。