4

2 つの異なるモジュールに 2 つのクラスがあります。

  • 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、スーパー クラスの定義モジュールにインポートしているのに、ロードされないのはなぜですか?

4

2 に答える 2

11

ロードされていますが、その名前は のスコープでは使用できませんmonkey.py

あなたはanimal.jsonそれを取得するために入力することができます(しかし、なぜそうするのですか)、または単に入力するだけです

import json

monkey.py同様に。Python は、モジュールが 2 回ロードされないようにします。

于 2012-05-06T16:02:36.043 に答える
2

Python のインポートは、C の #include プリプロセッサ ディレクティブとして機能しません。モジュールは、グローバル名前空間ではなく、インポート元モジュールの名前空間にのみインポートされます。したがって、使用するすべてのモジュールでjsonをインポートする必要があります。

于 2012-05-06T16:05:39.197 に答える