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

标签 python class object global-variables

我在 Python 中遇到了以下问题。假设您有 3 个文件:

1) a.py(定义A类):

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

2) b.py(定义类B,使用类A的全局对象的方法):

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

这里有什么问题吗? 一般来说,在另一个对象中使用一个对象的方法的最佳方式是什么?

提前谢谢您。

最佳答案

编辑:

尝试:

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()

关于python - 在Python中使用导入类的对象作为另一个类的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15653494/

相关文章:

python - 如何将列表中的元素组合到一个新的嵌套列表中?

javascript - 继承自 JS 中的两个(或多个)内置对象(Map、EventTarget)

java - 在 Java ArrayList 中对对象 block 进行排序

c# - 如何将数组对象列出来

python - 为什么我的 Spark DataFrame 比 RDD 慢很多?

Python解析空字符串

Java - 接受用户输入来创建未知数量的类对象/数组/数组列表

javascript - 使用 Object.assign 合并对象

python - 如何使用已导入的变量?

java - 如何在 Java 中查找 CPU 密集型类?