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

2024-06-08 15:19:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • animal.py
  • monkey.py

动物.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,那么为什么不加载它呢?


Tags: 模块pyimportselfjsonobjectinitpass
1条回答
网友
1楼 · 发布于 2024-06-08 15:19:47

好吧,python导入不起C#include pre processor指令的作用。它们只将模块导入导入模块的命名空间,而不导入全局命名空间。因此,您必须在每个要使用的模块中导入json。

网友
2楼 · 发布于 2024-06-08 15:19:47

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

您可以键入animal.json来获取它(但为什么要这样做),或者只键入

import json

也在monkey.py中。Python将确保模块不会被加载两次。

相关问题 更多 >