我在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中,它可以正常工作。
这是什么问题? 通常,在另一个对象中使用一个对象的方法的最佳方法是什么?
提前谢谢。
答案 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()