5

クラスがあり、次のようにして def 関数をインポートしたい:

import <file>

しかし、それを呼び出そうとすると、定義が見つからないと表示されます。私も試しました:

from <file> import <def>

しかし、グローバル名「x」が定義されていないと表示されます。

では、どうすればこれを行うことができますか?

編集:

これが私がやろうとしていることの例です。file1.py には次のものがあります。

var = "hi"

class a:
  def __init__(self):
    self.b()

  import file2

a()

そしてfile2.pyには次のものがあります:

def b(self):
  print(var)

しかし、それは私にエラーを与えているだけです。

4

1 に答える 1

7
import file2

モジュールをロードし、現在の名前空間file2の名前にバインドします。fromはではなくとして使用できるため、メソッドとして認識されません。あなたはそれを修正することができますfile2bfile2file2.bb

from file2 import b

bこれにより、モジュールがロードされ、そのモジュールの関数が name に割り当てられますb。しかし、私はそれをお勧めしません。file2最上位でインポートし、 に委譲するメソッドを定義file2.bするか、関連のないクラスで同じメソッドを頻繁に使用する必要がある場合は、継承可能な mixin スーパークラスを定義します。関数をメソッドとして使用するためにインポートするのは混乱を招き、使用しようとしている関数が C で実装されている場合は機能しなくなります。

于 2013-07-31T18:31:56.333 に答える