使用导入类的对象作为Python中另一个类的全局变量

时间:2013-03-27 07:11:58

标签: python class object global-variables

我在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中,它可以正常工作。

这是什么问题? 通常,在另一个对象中使用一个对象的方法的最佳方法是什么?

提前谢谢。

1 个答案:

答案 0 :(得分: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()