1

Pythonで次の問題に遭遇しました。次の 3 つのファイルがあるとします。

1) a.py (クラス A を定義):

class A:
  def a_method(self):
    print "global var experiment"

2) b.py (クラス A のグローバル オブジェクトのメソッドを使用するクラス B を定義):

class B:
  def b_method(self):
    print "calling a_method() from B..."
      obj_a.a_method()

3) global_ex.py:

from a import A

obj_a=A()       
obj_a.a_method()

from b import B

obj_b = B()
obj_b.b_method()

global_ex.py を実行すると、次のエラーが表示されます。

NameError: global name 'obj_a' is not defined

a.py と b.py をインポートする代わりに、それらをコピーして global_ex.py に貼り付けると、正常に動作します。

ここでの問題は何ですか?一般的に、あるオブジェクトのメソッドを別のオブジェクトで使用する最良の方法は何ですか?

前もって感謝します。

4

1 に答える 1

1

編集:

試す:

from a import A

class B():

  def __init__(self):
      self.a_obj = A()

  def b_method(self):
      print "calling a_method() from B..."
      self.a_obj.a_method()

または:

class B():

  def __init__(self, a_inst):
      self.a_inst = a_inst

  def b_method(self):
      print "calling a_method() from B..."
      self.a_inst.a_method()
于 2013-03-27T07:17:04.277 に答える